对于以下查询,我必须比较每个@currentdate和@workingdatekey的mm部分。如何仅比较yyyymmdd格式的mm部分?如果@workingdatekey的月份与@currentdate的月份相同,则继续退出
Declare @currentdate int
set @currentdate = CONVERT(int,CONVERT(varchar(20),GETDATE(),112))
print @currentdate
Declare @workingdatekey int
set @workingdatekey = CONVERT(int,CONVERT(varchar(20),GETDATE()-1,112))
print @workingdatekey
答案 0 :(得分:1)
IF (MONTH(GETDATE()-1) = MONTH(GETDATE()))
BEGIN
/* DO something here */
END
ELSE
BEGIN
/* Else do something here*/
END
答案 1 :(得分:1)
1)如果使用适当的类型([SMALL][DATE]TIME[2]
)存储日期值,则应使用MONTH函数提取月份数。
2)否则,如果日期值(由于某种原因)存储为INT
值(格式:yyyymmdd
),那么您可以使用(IntDate / 100) % 100
来获取月份数。
DECLARE @NowAsDT DATETIME;
SET @NowAsDT = GETDATE();
SELECT @NowAsDT AS CurrentDateDT, MONTH(@NowAsDT) AS CurrentMonthFromDT;
/*
CurrentDateDT CurrentMonthFromDT
----------------------- ------------------
2014-03-05 23:22:58.023 3
*/
DECLARE @NowAsINT INT;
SET @NowAsINT = CONVERT(VARCHAR(8), @NowAsDT, 112) -- Style 112 = yyyymmdd
SELECT @NowAsINT AS CurrentDateINT, (@NowAsINT / 100) % 100 AS CurrentMonthFromINT
/*
CurrentDateINT CurrentMonthFromINT
-------------- -------------------
20140305 3
*/
答案 2 :(得分:0)
您是否有理由将这些值转换为varchar?如果没有,你可以做datepart(mm,“你的日期列”)。这将返回日期的月份。然后你可以这样做:
if datepart(mm, "currentdatekey") = datepart(mm, "workingdatekey")
print 'They matched'
else
print 'They are different'