我正在尝试获取上个月最后一天没有时间显示的函数,即上个月的2019-09-30。
这是我尝试过的代码
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))
现在预期的结果2019-09-30 实际结果
答案 0 :(得分:3)
尝试使用带有偏移量的EOMONTH函数:
SELECT EOMONTH('2019-10-29', -1)
答案 1 :(得分:1)
您应该使用EOMONTH()
函数,其返回类型为date
,而DATEADD()
的返回类型是动态的,并取决于为date提供的参数。在您的情况下,来自DATEADD(s,-1, DATEADD(mm, DATEDIFF(m,0,GETDATE()), 0))
的结果是datetime
数据类型,因为0
是implicitly converted到datetime
的值01/01/1900 00:00:00
({{ 1}}和int
是不允许的。
date
答案 2 :(得分:1)
如果您采用今天的日期,并将其从今天的日期中减去,它将为您提供上个月的最后一天。
SELECT DATEADD(DY, -DAY(getdate()), cast(getdate() as date))
请注意将演员表转换为“ DATE”类型以仅提供日期
答案 3 :(得分:1)
您应该按照下面的示例所示尝试这种方式。
解决方案1:
上个月的最后一天
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))
LastDay_PreviousMonth
解决方案2:
当月最后一天
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))
LastDay_CurrentMonth
解决方案3:
下个月的最后一天
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+2,0))
LastDay_NextMonth