如何使第一个查询匹配第二个日期格式mm / dd / yyy

时间:2017-06-14 22:50:17

标签: sql date format

如何让第一个匹配第二个

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

1 个答案:

答案 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会把它读作字符串而不是日期类型。转换更多用于显示