如何让第一个匹配第二个
declare @lastDayprevquart date select @lastDayprevquart = convert(nvarchar(MAX),(DATEADD(Q, DATEDIFF(Q, 0, GETDATE()) - 1, 0)),101)
SELECT @lastDayprevquart
select convert(nvarchar(MAX),(DATEADD(Q, DATEDIFF(Q, 0, GETDATE()) - 1, 0)),101)
----最终结果应该像01/01/2017
答案 0 :(得分:0)
转换更多用于格式化显示..您需要CAST才能过滤
declare @lastDayprevquart date select @lastDayprevquart = convert(nvarchar(MAX),(DATEADD(Q, DATEDIFF(Q, 0, GETDATE()) - 1, 0)),101)
SELECT cast(@lastDayprevquart as date)
select cast(convert(nvarchar(MAX),(DATEADD(Q, DATEDIFF(Q, 0, GETDATE()) - 1, 0)),101) as date)
两者都应显示为2017-01-01
你的干净配方应该是
cast(DATEADD(Q, DATEDIFF(Q, 0, GETDATE()) - 1, 0) as date)
但如果你真的想要mm / dd / yyy格式
然后更改变量的数据类型
declare @lastDayprevquart nvarchar(max)
select @lastDayprevquart = convert(nvarchar(MAX),(DATEADD(Q, DATEDIFF(Q, 0, GETDATE()) - 1, 0)),101)
select @lastDayprevquart
select convert(nvarchar(MAX),(DATEADD(Q, DATEDIFF(Q, 0, GETDATE()) - 1, 0)),101)
注意如果你使用它作为你的标准,sql会把它读作字符串而不是日期类型。转换更多用于显示