问题描述
SQL Server数据库中,使用SQL语句如何查询一个指定日期当月的第一天?比如指定日期为2019-07-08
,需要使用SQL计算出2019年7月1日即2019-07-01
,应该如何实现呢?
方案一
使用SQL的内置函数DATEADD
和DATEDIFF
,如下:
SELECT DATEADD(month, DATEDIFF(month, 0, @mydate), 0) AS StartOfMonth
方案二
使用SQL的内置函数DATEFROMPARTS
,如下:
SELECT DATEFROMPARTS(YEAR(@mydate),MONTH(@mydate),1)
方案三
如果在SQL SERVER 2012及以上版本,则可以使用SQL的EOMONTH
函数,如下:
SELECT DATEADD(DAY,1,EOMONTH(@mydate,-1))
方案四
创建一个用户自定义函数,如下:
CREATE FUNCTION [dbo].[GetFirstDayOfMonth] ( @InputDate DATETIME )
RETURNS DATETIME
BEGIN
RETURN CAST(CAST(YEAR(@InputDate) AS VARCHAR(4)) + '/' +
CAST(MONTH(@InputDate) AS VARCHAR(2)) + '/01' AS DATETIME)
END
GO
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册