sql - 如何仅从 postgresQL 中的日期获取日期/月份部分

标签 sql postgresql

大家好 我的 pg 管理数据库中有一个表。此表中有一个 employee 表。具有以下字段:- 1)姓名 2)出生日期

现在的情况是我想知道当前日期和即将到来的 20 天的生日 例如,如果当前日期是 2013 年 1 月 28 日,则

1)from_date=28-Jan-2013
2)to_date=16-feb-2013

我想从表中选择所有记录 出生日期

lies between 28-Jan and 16-feb

最佳答案

试试这个:

SELECT *
FROM   bdaytable
WHERE  bdate >= '2013-01-28'::DATE
AND    bdate <= '2013-02-16'::DATE;

您也可以尝试 overlaps :

SELECT *
FROM bdaytable
WHERE (bdate, bdate) 
OVERLAPS ('2013-01-28'::DATE, '2013-02-16'::DATE);

with extract, month, day :

SELECT *
FROM   bdaytable
WHERE  Extract(month from bdate) >= Extract(month from '2013-01-28'::DATE)
AND    Extract(month from bdate) <= Extract(month from '2013-02-16'::DATE)
AND    Extract(day from bdate) >= Extract(day from '2013-01-28'::DATE)
AND    Extract(day from bdate) <= Extract(day from '2013-02-16'::DATE);

结合 Now()interval 使查询动态显示当前日期:

SELECT *
FROM   bdaytable
WHERE  Extract(month from bdate) >= Extract(month from Now())
AND    Extract(month from bdate) <= Extract(month from Now() + Interval '20 day')
AND    Extract(day from bdate) >= Extract(day from Now())
AND    Extract(day from bdate) <= Extract(day from Now() + Interval '20 day');

关于sql - 如何仅从 postgresQL 中的日期获取日期/月份部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14590508/

相关文章:

postgresql - 删除 PostgreSQL 8.3 上一组行中的重复字母

sql - PostgreSQL 查询调优指南?

sql - 在 postgresql 函数中选择自定义类型时出现格式错误的数组文字

sql - 按记录分组,然后从每组中获取最后一个升序排序记录?

mysql - 使用 SELECT mysql 查询将数据导出到 CSV 文件

sql - 如何在 PostgreSQL 中使用正则表达式将列输入限制为字母数字

postgresql - PhpStorm - 错误 : type "hstore" does not exist

mysql优化: select a non previously selected random pair of different values from a column of unique values

sql - 为列中的每个唯一值分配值

linux - 在 CentOS 5 中使用 Asterisk 进行 IVR 集成