Как выбрать продажи с 12 вечера сегодня до следующего дня 5 утра в sqlite - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть требование выбрать ежедневные продажи с сегодняшнего дня 12 вечера до следующего дня 5 утра, есть ли способ сделать это.

Пример: 2018-11-08 12:00 К 2018-11-09 05:00 (при запуске 2018-11-08)

Я могу получить ежедневные продажи до 23:59, но не могу получить продажи на следующий день до 05:00.

У меня есть Orders таблица с Order_date типом данных TEXT и форматом даты и времени YYYY-MM-DD HH:mm

1 Ответ

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

Я считаю, что можно использовать следующее: -

SELECT * FROM orders 
  WHERE order_date 
    BETWEEN (strftime('%Y-%m-%d','now')||' 12:00') 
    AND (strftime('%Y-%m-%d','now','+1 days')||' 05:00')
;

Рабочий пример

DROP TABLE IF EXISTS orders;
CREATE TABLE IF NOT EXISTS orders (order_date TEXT);
INSERT INTO orders (order_date) VALUES
        (strftime('%Y-%m-%d','now','-1 days')||' 11:59'), -- before
        (strftime('%Y-%m-%d','now')||' 00:00'), -- before
        (strftime('%Y-%m-%d','now')||' 11:59'), -- before (just)
        (strftime('%Y-%m-%d','now')||' 12:00'), --*** included
        (strftime('%Y-%m-%d','now')||' 23:59'), --*** included
        (strftime('%Y-%m-%d','now','+1 days')||' 05:00'), --**** included
        (strftime('%Y-%m-%d','now','+1 days')||' 05:01') -- after (just)
    ;

SELECT * FROM orders 
 WHERE order_date 
   BETWEEN (strftime('%Y-%m-%d','now')||' 12:00') 
   AND (strftime('%Y-%m-%d','now','+1 days')||' 05:00')
;
  • Те, которые отмечены ***, являются строками (3 из них), которые следует выбрать. enter image description here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...