2017-02-08 4 views
0

Using mySQL 5.6.TIME_FORMAT konnte nicht angezeigt werden, um 24-Stunden-Zeit anzuzeigen

Ich Speicherung Zeit in meiner Datenbank wie folgt aus:

15:00:00 

(Damit 03.00 ist Dies ist, was in der Datenbank gespeichert ist..)

Wenn ich Daten auswählen möchten basierend pünktlich, mache ich so etwas:

@x = "03:00 pm";  (This is what is being passed in from my time widget.) 

SELECT * FROM mytable 
WHERE start = TIME_FORMAT(@x, '%H:%i:%s'); 

Aber das gibt 03:00:00 zurück, also keine Übereinstimmung.
(Denken Sie daran, dass 15:00:00 in der Datenbank ist, also muss ich TIME_FORMAT von 15:00 Uhr auf 15:00:00 ändern, nicht 03:00:00.)

Ich habe alle folgenden Schritte ausprobiert :

SELECT TIME_FORMAT('03:00 pm', '%H:%i:%s') 
SELECT TIME_FORMAT('03:00 pm', '%h:%i:%s') 
SELECT TIME_FORMAT('03:00 pm', '%T') 

Und keine von ihnen geben mir die 15:00:00, die ich brauche. Hier

ist, was das Handbuch sagt:

This is used like the DATE_FORMAT() function, but the format string may 
contain format specifiers only for hours, minutes, seconds, and microseconds. 
Other specifiers produce a NULL value or 0. 

Und hier sind eine Reihe von Websites Beispiele und die Tabellen zeigt, die zeigen, welche Formatierungssymbole mit der TIME_FORMAT Funktion arbeiten:

https://www.techonthenet.com/mysql/functions/time_format.php 
http://www.java2s.com/Tutorial/MySQL/0280__Date-Time-Functions/TIMEFORMATtimeformat.htm 
http://www.w3resource.com/mysql/date-and-time-functions/mysql-time_format-function.php 
http://www.mysqltutorial.org/mysql-time/ 

So Alles hier sagt mir, dass das, was ich tue, funktionieren sollte.

Was bekomme ich nicht hier?

+1

Ihre Frage ist inkonsistent, Sie beginnen damit zu sagen, dass Sie Zeit als 24-Stunden-Wert speichern, aber dann fragen Sie am Ende, warum keine der Methoden ein 24-Stunden-Format wiederherstellt? – Martin

+0

Haben Sie versucht, das [Handbuch] (https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_time-format) zu lesen? – Martin

+1

Also habe ich mein Problem geklärt. Und ja, Martin, ich habe das Handbuch gelesen. Und überall gesucht, wo ich denken konnte. Aber ich arbeite alleine, zu Hause, und irgendwann brauche ich nur noch ein paar Augen, um mich in die richtige Richtung zu lenken. Sei nicht snarky. –

Antwort

1

können Sie STR_TO_DATE() verwenden:

select str_to_date('03:00 pm','%h:%i %p') 
+0

JA !!!! str_to_date() macht den Trick! –

0

Die folgende:

SELECT TIME_FORMAT('03:00 pm', '%H:%i:%s') 
SELECT TIME_FORMAT('03:00 pm', '%H:%i:%S') 
SELECT TIME_FORMAT('03:00 pm', '%T') 

korrekt sind Ihre Datenbank zu speichern, wie Ihre wollen.
vielleicht sollten Sie versuchen, den Parameter 'date' zu ändern.

Verwandte Themen