psql获取指定日期上月同期日期

本文介绍如何使用SQL进行日期操作,包括获取当前日期的上个月同期日期,以及指定日期的上月同期日期。通过实例展示了不同格式的日期输出,如年月日、年月日时分秒等。
# 上月同期
select now() + interval '-1 month';
select TO_CHAR(NOW() - INTERVAL '1 MONTH','YYYY-MM-DD') as "上月同期";
select TO_CHAR(NOW() - INTERVAL '1 MONTH','YYYY-MM-DD HH24:MI:SS') as "上月同期";
# 指定日期的上月同期 没有取上月最后一天
select date_trunc('day', date '2020-03-31') + interval '-1 month';
select to_char(date_trunc('day', date '2020-03-31') + interval '-1 month','yyyy-MM-DD'); # 2020-02-29
select TO_CHAR(date_trunc('day', date '2020-03-31') - INTERVAL '1 MONTH','YYYY-MM-DD HH24:MI:SS') as "上月同期";

 

PostgreSQL 中,若需要从 `timestamp` 类型中提日期部分,可以使用 `EXTRACT` 函数或 `DATE_PART` 函数。两者功能类似,但 `EXTRACT` 是 SQL 标准函数,具有更好的可移植性。以下是一些常用方法来提日期部分。 ### 提年、月、日 若需要分别提年、月、日部分,可以使用如下查询: ```sql SELECT EXTRACT(YEAR FROM CURRENT_TIMESTAMP) AS current_year, EXTRACT(MONTH FROM CURRENT_TIMESTAMP) AS current_month, EXTRACT(DAY FROM CURRENT_TIMESTAMP) AS current_day; ``` 此查询将返回当前时间戳中的年份、月份和日期部分[^2]。 ### 提小时、分钟、秒 同样地,如果需要提时间部分,如小时、分钟和秒,也可以使用 `EXTRACT` 函数: ```sql SELECT EXTRACT(HOUR FROM CURRENT_TIMESTAMP) AS current_hour, EXTRACT(MINUTE FROM CURRENT_TIMESTAMP) AS current_minute, EXTRACT(SECOND FROM CURRENT_TIMESTAMP) AS current_second; ``` ### 提周几或一年中的第几天 `EXTRACT` 还支持提其他时间信息,如一周中的第几天(`WEEKDAY`)或一年中的第几天(`YEARDAY`): ```sql SELECT EXTRACT(WEEKDAY FROM CURRENT_TIMESTAMP) AS current_weekday, EXTRACT(YEARDAY FROM CURRENT_TIMESTAMP) AS current_yearday; ``` 这些函数返回的值分别代表一周中的某一天(0 表示星期天)和一年中的第几天[^3]。 ### 使用 DATE_PART 函数 `DATE_PART` 函数的使用方式与 `EXTRACT` 类似,但语法略有不同。例如,提月份可以写为: ```sql SELECT DATE_PART('month', CURRENT_TIMESTAMP) AS current_month; ``` 此外,`DATE_PART` 还可用于提更具体的时间部分,例如 `epoch`,它用于获取自 1970-01-01 以来的秒数: ```sql SELECT DATE_PART('epoch', CURRENT_TIMESTAMP) AS epoch_time; ``` 此查询将返回当前时间戳对应的新纪元时间(Unix 时间戳)[^1]。 ### 转换时间戳为日期字符串 如果需要将时间戳转换为特定格式的日期字符串,可以使用 `TO_CHAR` 函数。例如,将时间戳格式化为 `YYYY-MM-DD`: ```sql SELECT TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD') AS formatted_date; ``` 此方法适用于需要将时间戳格式化为可读性更强的字符串形式的场景[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值