MySQL konwertuje ciąg daty na znacznik czasu Unix

137

Jak przekonwertować następujący format na uniksowy znacznik czasu?

Apr 15 2012 12:00AM

Wydaje się, że format, który otrzymałem od DB, ma AMna końcu. Próbowałem użyć następujących, ale nie zadziałało:

CONVERT(DATETIME, Sales.SalesDate, 103) AS DTSALESDATE,  
CONVERT(TIMESTAMP, Sales.SalesDate, 103) AS TSSALESDATE

where Sales.SalesDate value is Apr 15 2012 12:00AM
redcoder
źródło
1
Czy data jest przechowywana jako tekst w bazie danych?
strnk
1
Czy to naprawdę jest pytanie dotyczące MySQL? Twoja składnia tego nie sugeruje.
Álvaro González
1
Wygląda na to, o co chodzi w kwestii MSSQL.
Fedir RYKHTIK

Odpowiedzi:

224

Wypróbuj to zapytanie dla CONVERT DATETIME to UNIX TIME STAMP

SELECT UNIX_TIMESTAMP(STR_TO_DATE('Apr 15 2012 12:00AM', '%M %d %Y %h:%i%p'))

To zapytanie dotyczące CHANGE DATE FORMATE

SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(STR_TO_DATE('Apr 15 2012 12:00AM', '%M %d %Y %h:%i%p')),'%m-%d-%Y %h:%i:%p')
Query Master
źródło
1
Dzięki. To działa, można to również wykorzystać w innych instrukcjach, takich jak aktualizacja, usuwanie, wstawianie itp.
MR_AMDEV
1
Po tylu próbach rozwiązanie pracował dla mnie: select * from (SELECT order_increment_id, FROM_UNIXTIME(UNIX_TIMESTAMP(STR_TO_DATE(order_date, '%d %M %Y %h:%i:%s %p')),'%Y-%m-%d') as order_date, email_sent FROM `packingslip_header` where email_sent=0) t where order_date >= '2019-11-13' ORDER BY order_increment_id ASCJest to data miałem 31 Oct 2017 4:16:49 pmwięc potrzebne do korzystania %d %M %Y %h:%i:%s %pzSTR_TO_DATE
Damodara Bashyal
35

Z pewnością będziesz musiał użyć obu, STR_TO_DATEaby przekonwertować datę na standardowy format daty MySQL i UNIX_TIMESTAMPuzyskać z niego znacznik czasu.

Biorąc pod uwagę format twojej randki, coś w stylu

UNIX_TIMESTAMP(STR_TO_DATE(Sales.SalesDate, '%M %e %Y %h:%i%p'))

Will poda prawidłowy znacznik czasu. Zajrzyj do STR_TO_DATEdokumentacji, aby uzyskać więcej informacji na temat ciągu formatu.

strnk
źródło
10

Aby uzyskać aktualną datę, po prostu użyj UNIX_TIMESTAMP()w zapytaniu MySQL.

stackMonk
źródło
1
Nie odpowiada na pytanie z oryginalnego posta.
Evan Donovan,
to jest dla ludzi, którzy musieli przekonwertować tylko aktualną datę w swoim zapytaniu, odpowiada na część pytania, nie ma potrzeby twojego odźwiernego Evan, ludzie głosowali za tym samym, aby pokazać, że tego potrzebują
stackMonk
Pierwotne pytanie dotyczyło konwersji określonego formatu; to nie jest odpowiedzią na to pytanie. Anuluję głos przeciw, jeśli edytujesz, aby to wyjaśnić.
Evan Donovan
w pierwszej linii wyjaśniono, że dotyczy to aktualnej daty.
stackMonk
Redagowałem, aby wyjaśnić związek tej odpowiedzi z pierwotnym pytaniem i podać przykład.
Evan Donovan,
-5

Z http://www.epochconverter.com/

SELECT DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE())

My bad, SELECT unix_timestamp(time) Time format: YYYY-MM-DD HH:MM:SS or YYMMDD or YYYYMMDD. More on using timestamps with MySQL:

http://www.epochconverter.com/programming/mysql-from-unixtime.php
Brian Smith
źródło
1
Ta odpowiedź dotyczy MSSQL (chociaż to pytanie jest niejasne).
Salman A,