如何从 SQL 中的特定时间获取数据

How to fetch data from specific hours in SQL

我对 CosmosDB 有疑问,它也允许一些 SQL 查询。

我有一个数据库,每小时都会上传一条新记录。 我想获取从最后一天晚上 8 点到当天早上 8 点的所有内容,以及从当天早上 8 点到晚上 8 点的另一个查询。我在数据库中有一个 ISO 格式的时间戳。潜在的查询(或多个查询)会是什么样子?

我像这样获取了最后 24 小时,但我真的想坚持时间范围为晚上 8 点到早上 8 点,然后是早上 8 点到晚上 8 点,基本上是两班倒。上一张和现在一张。

function getLast24hTime(){
    var date = new Date();
    var a = date.setHours(-24);
    return a;
}

然后:

SELECT * FROM c where c.time >= udf.getLastHourTime()

tl;dr 每天我都想获取前一天(晚上 8 点至上午 8 点)的特定时间范围 + 当天(上午 8 点至晚上 8 点)的特定时间范围。怎么样。

在 mysql 你可以做到

另一个班次是模拟班次

CREATE TABLE be (
  `date` DATETIME
);

INSERT INTO be
  (`date`)
VALUES
  ('2022-01-13 20:41:24'),
  ('2022-01-13 21:41:24'),
  ('2022-01-14 01:41:24'),
  ('2022-02-14 09:41:24'),
  ('2022-02-14 10:41:24');
SELECT `date` from be WHERE `date` >  CURDATE() - INTERVAL 1 DAY + INTERVAL 20 HOUR
ANd  `date` < CURDATE()  + INTERVAL 8 HOUR
| date                |
| :------------------ |
| 2022-01-13 20:41:24 |
| 2022-01-13 21:41:24 |
| 2022-01-14 01:41:24 |

db<>fiddle here