我正在尝试在 MYSQL 5.5.34 上执行此查询
SELECT `CustomerName`,`BookingDate`, HOUR(`BookingDate`)from bookings;
这导致NULL,
但相同的查询在 MYSQL 5.5.16 中正常工作并返回特定日期的小时数
关于 MYSQL 5.5.34 的错误报告的任何帮助或想法
您的日期时间格式不正确。不清楚169-300
代表什么部分...
STR_TO_DATE()
但是您甚至可以通过使用first从部分正确的格式中提取一个小时部分
SELECT CustomerName,
BookingDate,
HOUR(STR_TO_DATE(BookingDate, '%Y-%c-%e %H:%i')) hour
FROM bookings;
输出:
| 客户名称 | 预订日期 | 小时 | |-------------|--------------|------| | 客户1 | 2013-9-30 17:10:169-300 | 17 |
这是SQLFiddle演示(MySQL 5.1.61)
HOUR()
MySQL 中的函数有一个时间数据类型的参数。如果你想从日期时间格式中获取时间,你应该使用EXTRACT()
如下:
-- SYNTAX: EXTRACT(unit FROM date)
SELECT `CustomerName`,`BookingDate`, EXTRACT(HOUR FROM CAST(`BookingDate` as datetime)) from bookings;
参考: