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

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

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.


10

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


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

1
Diese Antwort ist für MSSQL (obwohl diese Frage einige Verwirrung hat).
Salman A
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.