Получить записи из таблиц, где время больше, чем mytime - PullRequest
0 голосов
/ 19 ноября 2018

Это моя база данных изображение .Я хочу получить все записи, где clockin_time> 10:00 AM.Можете ли вы помочь мне, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

1001 * данный *

+----+----------+
| id | ts       |
+----+----------+
|  1 | 09:00 AM |
|  2 | 10:00 AM |
|  3 | 11:00 PM |
|  4 | 09:00 PM |
|  5 | 09:00    |
|  6 | 22:00    |
+----+----------+

тогда

select id,ts 
from t
where       case when instr(upper(ts),'AM') > 0 then
                    cast(trim(replace(ts,'AM','')) as time)
               when instr(upper(ts),'PM') > 0 then
                case when cast(substring_index(ts,':',1) as integer) < 12 then
                            addtime(cast(trim(replace(ts,'PM','')) as time),'12:00:00')
                          else
                           cast(trim(replace(ts,'PM','')) as time)
                    end
                else
                    cast(trim(ts) as time)
         end > cast('10:00' as time);

производит

+----+----------+
| id | ts       |
+----+----------+
|  3 | 11:00 PM |
|  4 | 09:00 PM |
|  6 | 22:00    |
+----+----------+

Здесь нет ничего сложного, и код пытается перехитрить то, что кажется довольно случайным способом хранения времени.

0 голосов
/ 19 ноября 2018

Если ваше clockin_time действительно является VARCHAR (это то, что я предполагаю), тогда измените VARCHAR на DATETIME в вашем запросе выбора, а затем вы можете сравнить его.Смотрите ниже, как это сделать.

SELECT * FROM tbl_clock WHERE STR_TO_DATE(clockin_time, '%h:%i %p') > '10:00:00';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...