【问题标题】:SQL query to find if a date falls between two othersSQL查询以查找日期是否介于其他两个日期之间
【发布时间】:2019-11-28 16:41:16
【问题描述】:

我有一个要在其上运行 SQL 查询的表。我想找到所有状态为active 并将其interval_type 设置为interval 的客户。那部分很好,这是我正在努力的下一部分。

我想查找要在 2019 年 12 月 1 日至 2019 年 12 月 6 日之间处理的任何订单。

困难在于,在我的表中,我有“间隔”列,这可以是 15-75 天之间的一个数字(并转换为秒)以及他们的订单最后一次处理的时间(也是一个 unix 时间戳)名为“last_processed”的列。

如果将“间隔”(以秒为单位)添加到“last_processed”(日期),那么新日期是否在 12 月 1 日至 6 日之间。我该怎么做?

SELECT *
FROM subscriptions 
WHERE
    status = 'active' AND
    interval_type = 'interval' AND
    `interval` BETWEEN 1575158400 AND 1575676740;

我的表格中的数据如下所示:

【问题讨论】:

  • 目前还不清楚你想要的时间间隔是什么时间单位秒年。此外,您应该始终提供一些数据,请参阅meta.stackoverflow.com/questions/333952/…
  • @nbk 我已经更新了问题,间隔以秒为单位,最后处理的是日期。我现在将添加一些数据。

标签: mysql sql


【解决方案1】:

你可以这样做

SELECT *,
FROM_UNIXTIME(last_processed+`interval`)
FROM subscriptions
WHERE status = 'active' AND
    interval_type = 'interval'
    AND (last_processed + `interval`) BETWEEN  UNIX_TIMESTAMP('2019-12-01 00:00:00')
    AND   UNIX_TIMESTAMP('2019-12-06 23:59:59');

DBfiddle Example

下次请使用文本代替或直接使用 dbfiddle 示例,比您更早得到答案。这就是为什么我发布了一个最小示例的链接。

【讨论】:

    猜你喜欢
    • 2021-08-23
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多