2016-07-15 20 views
0

Ich versuche, ein TIMESTAMP den DATETIME, DATE und TIME MySQL-Typen zu konvertieren mit dem FROM_UNIXTIME Feld. Ich habe festgestellt, dass die Werte für die Felder TIME und unterschiedliche Zeitinformationen haben.Unterschiedliche Werte für Datetime, Datums- und Zeitfelder aus Zeitstempeln in MySQL

Anstelle der Insert-Anweisung an den Tisch, ich bin es mit einer einfachen SELECT-Anweisung zu ersetzen, die die Werte drucken:

select FROM_UNIXTIME('1468561341') as timestamp_datetime,FROM_UNIXTIME('1468561341','%d/%m/%y') as timestamp_date, FROM_UNIXTIME('1468561341','%h:%m:%s %p') as timestamp_time 

Die Ergebnisse sehen wie folgt aus:

  • timestamp_datetime: 2016-07-15 05:42:21.000000
  • timestamp_date 15/07/16
  • timestamp_time 05:07:21 AM

Wie kann ich in beiden Spalten einen konsistenten Zeitwert erhalten?

+0

Was meinen Sie * konsistenten Zeitwert *? – Blank

Antwort

1

das Problem ist mit dem Buchstaben m

es sollte ich sein

mysql> select FROM_UNIXTIME(1468561341) as timestamp_datetime,FROM_UNIXTIME(1468561341,'%d/%m/%y') as timestamp_date, FROM_UNIXTIME(1468561341,'%h:%i:%s %p') as timestamp_time; 
+---------------------+----------------+----------------+ 
| timestamp_datetime | timestamp_date | timestamp_time | 
+---------------------+----------------+----------------+ 
| 2016-07-15 05:42:21 | 15/07/16  | 05:42:21 AM | 
+---------------------+----------------+----------------+ 
1 row in set (0.05 sec) 
+0

% m bedeutet Monat nicht Minute, um Minute zu erhalten, bitte benutze i –

0

Ihr Problem ist, dass Sie in Ihrem FROM_UNIXTIME im Wesentlichen es sagen

hours-months-seconds -AM/PM 

zu tun, aber Sie wollen

hours-minutes-seconds -AM/PM 

So ändern Sie es zu

FROM_UNIXTIME(1468561341,'%h:%i:%s %p') 

stattdessen.

Referenzhandbuch für alle Zeitparameter und die Verwendung von Zeitfunktionen in MySQL hier: https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html