【问题标题】:How to select data from a table with fixed difference between two columns in SQL如何从 SQL 中两列之间具有固定差异的表中选择数据
【发布时间】:2020-11-24 13:38:22
【问题描述】:

我想查询一个包含“generationUtc”和“Utc”列的 MySQL 表,并且我只想查询“generationUtc”和“Utc”之间的差异为一天的数据。例如,我只想要具有 generationUtc = 2020-07-21 和 Utc = 2020-07-22 的数据,这是一天后的数据。但我希望在所有可用日期都使用它。

所以这既是一个与 SQL 中的日期相关的问题,也是一个在不同列上提取具有特定条件的数据的问题。

我尝试了类似的东西

SELECT * FROM database
WHERE EXTRACT(DAY FROM (generatedUtc - Utc)) = '1'

但这似乎不起作用。我发现了很多关于如何将两列之间的差异提取为新列的帖子,但没有关于如何直接提取具有两列差异条件的数据。

【问题讨论】:

  • (1) 用您正在使用的数据库标记您的问题。 (2) 举例说明! “1 天”对您意味着什么
  • 什么是数据库? SQL 只是一种语言,不同引擎的时间函数差异很大。
  • 这是 MySQL。很抱歉,我不知道我对 SQL 不是很熟悉。我编辑了我的问题。

标签: mysql sql date date-arithmetic


【解决方案1】:

问题是 MySQL 标记的 - 所以

SELECT * 
FROM database
WHERE DATEDIFF(Utc, generatedUtc) = 1

这需要将两列都定义为 DATE 数据类型。如果它们是 DATETIME 或 TIMESTAMP,那么

SELECT * 
FROM database
WHERE DATEDIFF(DATE(Utc), DATE(generatedUtc)) = 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 2013-05-02
    • 2013-10-09
    • 1970-01-01
    相关资源
    最近更新 更多