MySQL konvertiert Datumszeichenfolge in Unix-Zeitstempel

137

Wie konvertiere ich das folgende Format in einen Unix-Zeitstempel?

Apr 15 2012 12:00AM

Das Format, das ich von DB bekomme, scheint AMam Ende zu haben . Ich habe versucht, Folgendes zu verwenden, aber es hat nicht funktioniert:

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
quelle
1
Wird das Datum als Text in der Datenbank gespeichert?
Strnk
1
Ist es wirklich eine MySQL-Frage? Ihre Syntax schlägt dies nicht vor.
Álvaro González
1
Scheint, was die Frage über MSSQL ist.
Fedir RYKHTIK

Antworten:

224

Versuchen Sie diese Abfrage für CONVERT DATETIME to UNIX TIME STAMP

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

Diese Abfrage für 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')
Abfragestamm
quelle
1
Vielen Dank. Dies funktioniert. Dies kann auch in anderen Anweisungen wie Aktualisieren, Löschen, Einfügen usw. verwendet werden
MR_AMDEV
1
Nach so vielen Versuchen Sie Ihre Lösung für mich gearbeitet: 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 ASCDas ist das Datum , das ich hatte , 31 Oct 2017 4:16:49 pmdamit ich verwenden benötigt %d %M %Y %h:%i:%s %pfürSTR_TO_DATE
Damodar Bashyal
35

Sie müssen sicherlich beides verwenden STR_TO_DATE, um Ihr Datum in ein MySQL-Standard-Datumsformat zu konvertieren und UNIX_TIMESTAMPden Zeitstempel daraus zu erhalten.

In Anbetracht des Formats Ihres Datums, so etwas wie

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

Will gibt Ihnen einen gültigen Zeitstempel. STR_TO_DATEWeitere Informationen zur Formatzeichenfolge finden Sie in der Dokumentation.

strnk
quelle
10

Für das aktuelle Datum verwenden Sie einfach UNIX_TIMESTAMP()in Ihrer MySQL-Abfrage.

stackMonk
quelle
1
Beantwortet keine Frage aus dem ursprünglichen Beitrag.
Evan Donovan
Es ist für Leute, die nur das aktuelle Datum in ihrer Anfrage konvertieren mussten, einen Teil der Frage beantworten, keine Notwendigkeit für Ihre Gatekeeping-Evan, Leute haben das gleiche positiv bewertet, um zu zeigen, dass sie dies brauchen
stackMonk
In der ursprünglichen Frage wurde darum gebeten, ein bestimmtes Format zu konvertieren. Dies beantwortet diese Frage nicht. Ich werde die Abstimmung abbrechen, wenn Sie dies bearbeiten, um dies zu verdeutlichen.
Evan Donovan
In der ersten Zeile wurde klargestellt, dass dies für das aktuelle Datum gilt.
stackMonk
Ich habe bearbeitet, um die Beziehung dieser Antwort zur ursprünglichen Frage zu verdeutlichen und ein Beispiel zu geben.
Evan Donovan
-5

Von 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
quelle
1
Diese Antwort ist für MSSQL (obwohl diese Frage einige Verwirrung hat).
Salman A