1

我正在尝试在 MYSQL 5.5.34 上执行此查询

SELECT `CustomerName`,`BookingDate`, HOUR(`BookingDate`)from bookings;

这导致NULL,

但相同的查询在 MYSQL 5.5.16 中正常工作并返回特定日期的小时数

关于 MYSQL 5.5.34 的错误报告的任何帮助或想法

4

2 回答 2

2

您的日期时间格式不正确。不清楚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)

于 2013-10-22T09:47:31.833 回答
1

HOUR()MySQL 中的函数有一个时间数据类型的参数。如果你想从日期时间格式中获取时间,你应该使用EXTRACT()如下:

-- SYNTAX: EXTRACT(unit FROM date)
SELECT `CustomerName`,`BookingDate`, EXTRACT(HOUR FROM CAST(`BookingDate` as datetime)) from bookings;

参考:

于 2013-10-22T08:03:00.827 回答