按年份范围(同月和日)过滤年份

tom*_*115 6 sql database postgresql date postgresql-8.4

我有一个PostgreSQL数据库,其中包含一个保存日期的表.现在我需要查找日期范围内的所有行,15/02直到21/06所有年份的(日/月).

示例结果:

1840-02-28
1990-06-21
1991-02-15
1991-04-25
1992-05-30
1995-03-04
1995-04-10
2001-02-03
2010-04-06
Run Code Online (Sandbox Code Playgroud)

kgr*_*ttn 7

假设(通过信念的飞跃)你想要一年中某些日子之间的日期而不管一年(例如,如果你发送了一批生日贺卡或其他东西),你可以设置一个测试:

CREATE TABLE d (dt date);
COPY d FROM STDIN;
1840-02-28
1990-06-21
1991-02-15
1991-04-25
1992-05-30
1995-03-04
1995-04-10
2001-02-03
2010-04-06
\.
Run Code Online (Sandbox Code Playgroud)

您可以使用"行值构造函数"轻松选择所需的范围:

SELECT * FROM d
  WHERE (EXTRACT(MONTH FROM dt), EXTRACT(DAY FROM dt))
           BETWEEN (2, 15) AND (6, 21);
Run Code Online (Sandbox Code Playgroud)

产量:

     dt     
------------
 1840-02-28
 1990-06-21
 1991-02-15
 1991-04-25
 1992-05-30
 1995-03-04
 1995-04-10
 2010-04-06
(8 rows)


Cra*_*ger 1

使用WHERE带有BETWEEN运算符的子句。看:

http://www.postgresql.org/docs/current/static/functions-comparison.html#FUNCTIONS-COMPARISON

和:

http://www.postgresql.org/docs/current/static/sql-select.html http://www.postgresql.org/docs/current/static/tutorial.html

如果这没有帮助,请通过以下方式扩展您的问题:

  • 您正在使用的表的结构,来自 psql 的\d tablename命令或原始CREATE TABLE语句;
  • 一些示例内容
  • 您遇到问题的查询
  • 预期成绩