正在解析 SQL AM/PM 进行比较

Parsing SQL AM/PM for comparison

是否可以在 SQL 中解析 A​​M 和 PM 时间并使用它们进行比较?

例如,如下语句:

STR_TO_DATE(pack_time_min) <= DATE_ADD(NOW(), INTERVAL 1 HOUR)

数据如下:1:30pm

您可以这样解析 12 小时时间:

STR_TO_DATE('1:30pm', '%l:%i%p')

结果:

+----------------------------------+
| str_to_date('1:30pm', '%l:%i%p') |
+----------------------------------+
| 13:30:00                         |
+----------------------------------+

这是一个 TIME 值,而不是 DATETIME。 NOW() 函数将 return DATETIME,因此您应该使用 CURRENT_TIME() 代替。

mysql> select current_time() + interval 1 hour;
+----------------------------------+
| current_time() + interval 1 hour |
+----------------------------------+
| 02:57:13                         |
+----------------------------------+

然后你可以比较一个TIME和一个TIME。

mysql> select str_to_date('1:30pm', '%l:%i%p') <= current_time() + interval 1 hour;
+----------------------------------------------------------------------+
| str_to_date('1:30pm', '%l:%i%p') <= current_time() + interval 1 hour |
+----------------------------------------------------------------------+
|                                                                    0 |
+----------------------------------------------------------------------+