Разбор SQL AM / PM для сравнения - PullRequest
0 голосов
/ 26 февраля 2019

Можно ли анализировать время AM и PM в SQL и использовать их для сравнения?

Например, оператор, подобный следующему:

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

С данными вроде так: 1:30pm

1 Ответ

0 голосов
/ 26 февраля 2019

Вы можете проанализировать 12-часовое время следующим образом:

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

Результат:

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

Это значение ВРЕМЕНИ, а не DATETIME.Функция NOW() вернет DATETIME, поэтому вы должны использовать CURRENT_TIME().

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

Затем вы можете сравнить ВРЕМЯ со ВРЕМЕНЕМ.

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 |
+----------------------------------------------------------------------+
...