2017-01-27 5 views
0

Ich bekomme Probleme mit MySQL 5.7 - Wählen Sie auf TIMESTAMP Spalte. Hier von Tabellenerstellung Beschreibung:sql timestamp falsches Ergebnis - jetzt

`utc_timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 

Wenn ich

select * from table 

Ich sehe utc_timestamp führen feinen

Aber wenn ich

select utc_timestamp from table 

Die Daten enthält gezeigt keine in der Tabelle gespeicherten Daten aber aktuelle Zeit!

Warum diese beiden Anfragen mir einen anderen Wert von utc_timestamp Spalte Daten geben? Ich habe das vorher noch nie gesehen, während ich an MySQL, PostgreSQL, MSSQL etc. gearbeitet habe. Also nicht sicher, ob ich etwas nicht weiß oder MySQL-Bug?

Ich habe versucht aus verschiedenen SQL-Clients (MySQL Workbench 6.1 und HeidiSQL) und das Ergebnis ist das gleiche, so dass dies auf der Serverseite sicher passieren.

Antwort

1

Laut Handbuch hier https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_utc-timestamp Utc_timestamp ein in var gebaut wird, versuchen Select table.utc_timestamp von Tisch zu tun Oder eine andere geben, nicht reservierten Namen, auf die Spalte, nicht Sie und andere zu verwirren.

+0

Ok, werde versuchen - nur einen Moment – Pavlo

+0

Sieht aus, als hättest du recht damit. Ich lege den Tabellennamen vor die Spalte und es funktioniert jetzt. Ich kann die Tabelle nicht umbenennen, da sie voller Daten ist und tatsächlich von anderen Entwicklern erstellt wurde. Vielen Dank. – Pavlo

2

https://dev.mysql.com/doc/refman/5.5/en/keywords.html

utc_timestamp ist ein reserviertes Schlüsselwort in mysql, versuchen Graviszeichen auf die Abfrage Hinzufügen

select `utc_timestamp` from table 

Ich denke, es besser ist, die Spaltennamen zu ändern und nicht die Spalten ähnlich wie reservierte Sprache Schlüsselwort zu nennen damit du solche Verwirrungen nicht bekommst.

+0

Das funktioniert auch - danke – Pavlo