【问题标题】:How can I write this SQL query for date and time?如何为日期和时间编写此 SQL 查询?
【发布时间】:2022-11-01 18:34:25
【问题描述】:

我正在尝试进行一个看起来像的查询 SELECT * from `table` WHERE args 我需要将我的参数设置为“昨天”和时间 23:00 到日期“今天”和时间 22:59 的日期。

我在编写 SQL 方面非常糟糕,为此我需要大师的帮助。 我知道如何编写基本的 SQL,但我不确定如何编写。 日期和时间是 2 个不同的行。

基本的 SQL 东西。 期望从昨天的日期开始的所有数据,从时间 23:00 到日期 = 今天和时间 = 22:59 逻辑上很简单,我只是不擅长编写 SQL 逻辑。 必须始终根据当前日期生成日期,时间将是静态的。

SELECT * from `table` WHERE date= Yesterday And time= 23:00 TO date=today time=22:59

编辑: 数据库是来自 Xampp 的 MariaDB

【问题讨论】:

  • 你真的有单独的日期和时间列吗?如果是这样,为什么?有理由将它们分开吗?

标签: sql mariadb


【解决方案1】:

您可以尝试以下查询:

SELECT * FROM `table` WHERE date BETWEEN CONCAT(date_sub(curdate(),interval 1 day),' 23:00') AND CONCAT(curdate(),' 22:59');

请仔细检查您的数据库时区。

【讨论】:

    【解决方案2】:

    假设这是 MySQL (MariaDB),实际上有两列称为 date 和 time 这可以写成

    SELECT * FROM `table` WHERE
    (date = SUBDATE(CURDATE(), 1) AND time >= '23:00') OR (date = CURDATE() AND time < '23:00');
    

    不过这有点不寻常。通常你会有datetime 或timestamp 类型的单列而不是两列,它们不应该被称为date 或time,因为它们是关键字。

    【讨论】:

      猜你喜欢
      • 2012-02-29
      • 1970-01-01
      • 2021-01-15
      • 1970-01-01
      • 2015-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      相关资源
      最近更新 更多