SQL 获取月份中的第一天

本文介绍了如何在不同数据库系统(Oracle、MySQL、SQLServer、PostgreSQL和SQLite)中使用SQL查询来获取给定日期所在月份的第一天。各数据库使用了特定的日期函数,如Oracle的TRUNC、MySQL的DATE_SUB和DAYOFMONTH、SQLServer的DATEADD、PostgreSQL的date_trunc以及SQLite的DATE函数。
摘要由CSDN通过智能技术生成

本文介绍如何在各种数据库中使用 SQL 获取月份中的第一天。

Oracle

对于 Oracle 数据库,我们可以使用 TRUNC 函数对日期进行截断。例如:

SELECT TRUNC(date '2023-04-06', 'MM')
FROM DUAL;

| TRUNC(DATE'2023-04-05','MM') |
|------------------------------|
|         2023-04-01 00:00:00  |

TRUNC(datetime, fmt) 函数可以基于 fmt 指定的单位对日期时间进行截断,MM 表示截断到月份。其他的截断单位可以参考官方文档

MySQL

MySQL 提供了 DATE_SUB 以及 DAYOFMONTH 函数,结合使用就可以获取月份中的第一天。例如:

SET @date:='2023-04-06';
SELECT DATE_SUB(@date, INTERVAL DAYOFMONTH(@date)-1 DAY);

DATE_SUB(@date, INTERVAL day(@date)-1 DAY)|
------------------------------------------+
2023-04-01                                |

DATE_SUB 函数表示基于某个日期减去一个时间间隔,DAYOFMONTH 函数用于返回某个日期属于其月份中的第几天。

另外,我们也可以使用 DATE_ADD 函数实现相同的效果。

Microsoft SQL Server

Microsoft SQL Server 的实现方法和 MySQL 类似,只是函数名不同:

DECLARE @date date;
SET @date = '2023-04-06';
SELECT DATEADD(dd, -( DAY( @date ) -1 ), @date);

2023-04-01

DATEADD 函数用于将日期增加一个时间间隔,DAY 函数用于返回某个日期属于其月份中的第几天。

PostgreSQL

PostgreSQL 提供了类似 Oracle 数据库的日期截断函数。例如:

SELECT date_trunc('month', date '2023-04-06')::date;

date_trunc|
----------+
2023-04-01|

date_trunc 函数的返回值包含了时间部分,因此需要转换为日期类型。

SQLite

SQLite 中的 DATE 函数可以很方便地获取月份中的第一天,例如:

SELECT DATE('2023-04-06', 'start of month');

DATE('2023-04-06', 'start of month')|
------------------------------------+
2023-04-01                          |

其中,“start of month”表示返回月份中的第一天。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不剪发的Tony老师

为 5 个 C 币而折腰。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值