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

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')

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.


10

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


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

1
Ta odpowiedź dotyczy MSSQL (chociaż to pytanie jest niejasne).
Salman A,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.