是否可以在SQL中解析AM和PM时间并将其用于比较?
例如,如下语句:
STR_TO_DATE(pack_time_min) <= DATE_ADD(NOW(), INTERVAL 1 HOUR)
具有如下数据:1:30pm
答案 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 |
+----------------------------------------------------------------------+