解析SQL AM / PM以进行比较

时间:2019-02-26 01:53:04

标签: mysql date-parsing

是否可以在SQL中解析AM和PM时间并将其用于比较?

例如,如下语句:

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

具有如下数据:1:30pm

1 个答案:

答案 0 :(得分:2)

您可以通过以下方式解析12小时时间:

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

结果:

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

那是TIME值,而不是DATETIME。 NOW()函数将返回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 |
+----------------------------------------------------------------------+