我遇到了MySQL 5.7的问题 - 在TIMESTAMP列上选择。这里来自表创建说明:
`utc_timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
当我这样做时
select * from table
我看到utc_timestamp结果很好
但如果我这样做
select utc_timestamp from table
显示的数据不包含存储在表格中的日期,而是当前时间!
为什么这两个请求会给我不同的utc_timestamp列数据值?我以前从未见过这个,在MySQL,PostgreSQL,MSSQL等工作时所以不确定是因为我不知道某些东西还是MySQL的错误?
我试过不同的SQL客户端(MySQL Workbench 6.1和HeidiSQL),结果是一样的,所以这肯定发生在服务器端。
答案 0 :(得分:2)
https://dev.mysql.com/doc/refman/5.5/en/keywords.html
utc_timestamp
是mysql中的保留关键字,尝试在查询中添加反引号
select `utc_timestamp` from table
我认为最好更改列名,而不是命名与保留语言关键字类似的列,这样就不会出现这种混淆。
答案 1 :(得分:1)
根据这里的手册https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_utc-timestamp Utc_timestamp是一个内置的var,尝试做 从表中选择table.utc_timestamp 或者给列添加另一个而不是保留的名称,而不是让你和其他人混淆。