pra*_*u R 38 sql-server datetime sql-server-2005 date
我需要以下列格式找到一个月的最后一天:
"2013-05-31 00:00:00:000"
Run Code Online (Sandbox Code Playgroud)
有人请帮忙.
Dev*_*art 70
试试这个 -
CREATE FUNCTION [dbo].[udf_GetLastDayOfMonth]
(
@Date DATETIME
)
RETURNS DATETIME
AS
BEGIN
RETURN DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, @Date) + 1, 0))
END
Run Code Online (Sandbox Code Playgroud)
查询:
DECLARE @date DATETIME
SELECT @date = '2013-05-31 15:04:10.027'
SELECT DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, @date) + 1, 0))
Run Code Online (Sandbox Code Playgroud)
输出:
-----------------------
2013-05-31 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
MgS*_*Sam 43
我知道这个问题适用于SQL Server 2005,但我想我会提到 - 从SQL 2012开始,现在有一个EOMONTH()功能可以在本月的最后一天获得.要以原始提问者指定的格式获取它,您必须转换为datetime.
SELECT CAST(eomonth(GETDATE()) AS datetime)
Run Code Online (Sandbox Code Playgroud)
And*_*mar 12
SQL Server 2012引入了以下eomonth功能:
select eomonth('2013-05-31 00:00:00:000')
-->
2013-05-31
Run Code Online (Sandbox Code Playgroud)
declare @date datetime;
set @date = getdate(); -- or some date
select dateadd(month,1+datediff(month,0,@date),-1);
Run Code Online (Sandbox Code Playgroud)