【问题标题】:Get the dates of two weeks from today from database从数据库中获取从今天起两周的日期
【发布时间】:2020-04-16 15:26:41
【问题描述】:

我在 postgresql 数据库中有一些日期。我想找到从今天到接下来两周或 14 天的日期。我如何找到当前日期和接下来 14 天之间的日期?此查询不起作用。 我在数据库中有日期格式 2019-12-26。

"SELECT work_date FROM USERS_SCHEDULE WHERE user_id = 11 AND data(now() +14)";

【问题讨论】:

  • Mysql 和 postgresql 是两种不同的数据库产品,具有不同的 sql 实现。请指出您在问题中包含的代码有什么问题。
  • @Maw 我的回答对你有帮助吗?

标签: sql postgresql


【解决方案1】:

只需将天数添加到日期即可设置所需的限制日期。

样本数据

CREATE TABLE users_schedule (work_date DATE);
INSERT INTO users_schedule 
SELECT generate_series(CURRENT_DATE, DATE '2020-01-31', '1 day');

查询(当前日期到 3 天后的日期)

SELECT work_date FROM users_schedule 
WHERE work_date BETWEEN CURRENT_DATE AND CURRENT_DATE + 3;
 work_date  
------------
 2019-12-26
 2019-12-27
 2019-12-28
 2019-12-29
(4 rows)

如果您的意思是要在一个区间内获取所有可能的日期,请查看generate_series

SELECT generate_series(DATE '2016-08-01', DATE '2016-08-14', '1 day'); 

    generate_series     
------------------------
 2016-08-01 00:00:00+02
 2016-08-02 00:00:00+02
 2016-08-03 00:00:00+02
 2016-08-04 00:00:00+02
 2016-08-05 00:00:00+02
 2016-08-06 00:00:00+02
 2016-08-07 00:00:00+02
 2016-08-08 00:00:00+02
 2016-08-09 00:00:00+02
 2016-08-10 00:00:00+02
 2016-08-11 00:00:00+02
 2016-08-12 00:00:00+02
 2016-08-13 00:00:00+02
 2016-08-14 00:00:00+02
(14 rows)

使用CURRENT_DATE

SELECT generate_series(CURRENT_DATE, DATE '2019-12-31', '1 day'); 
    generate_series     
------------------------
 2019-12-26 00:00:00+01
 2019-12-27 00:00:00+01
 2019-12-28 00:00:00+01
 2019-12-29 00:00:00+01
 2019-12-30 00:00:00+01
 2019-12-31 00:00:00+01
(6 rows)

【讨论】:

    【解决方案2】:
    SELECT work_date 
    FROM users_schedule 
    WHERE user_id = 11 
      AND work_date BETWEEN CURRENT_DATE
                        AND CURRENT_DATE + INTERVAL '14 days'
    

    【讨论】:

    • 评论:虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。我建议您查看 SO 的 official How to Answer article 以及来自 Jon Skeet 的综合 blog post
    • @AlekseyPotapov 在我的问题中,除了语法版本之外什么都没有。所以这个答案的价值最初是零。
    猜你喜欢
    • 2017-06-22
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多