DECLARE @d DATETIME SET @d='2009/08/01'SELECT CASE WHEN DATEPART(m,@d)=DATEPART(m,GETDATE()) THEN '月份相同' ELSE '月份不同' END
DATEPART详见帮助文档,里面有关于时间具体的比较和缩写
DECLARE @d1 datetime DECLARE @d2 datetime SET @d1 = '2014-08-01' SET @d2 = '2014-08-31 23:59:59.999' SELECT CASE WHEN Convert(varchar(7),@d1,120) = Convert(varchar(7),@d1,120) THEN '同月' ELSE '不同月' END
DECLARE @d1 datetime DECLARE @d2 datetime SET @d1 = '2014-08-01' SET @d2 = '2014-08-31 23:59:59.999' SELECT CASE WHEN Convert(varchar(7),@d1,120) = Convert(varchar(7),@d1,120) THEN '同月' ELSE '不同月' END
--判断年月 --1 declare @ym datetime = '2014-08-26' select case when DATEPART(YY,GETDATE()) = datepart(YY,@ym) and DATEPART(MM,GETDATE()) = datepart(MM,@ym) then '年月相同' else '年月不相同' end
select case when CONVERT(varchar(6),GETDATE(),112) = CONVERT(varchar(6),@ym,112) then '年月相同' else '年月不相同' end
select case when CONVERT(varchar(7),GETDATE(),120) = CONVERT(varchar(7),@ym,120) then '年月相同' else '年月不相同' end --关于convert第三个参数,可以上网上找找相关资料,第三个参数在转换时间的时候,每一种数字,都代表一种时间格式,找到你需要的格式,然后截取做比较,关于varchar(6)或者 varchar(7)这种长度是因为,如果长度不够,会自动截取前?位,?就是你填写的数字,所以可以通过长度控制你需要的年月,然后做对比
再添加一种,多多益善 其中@datePara 是日期参数 select case when year(@datePara)=year(getdate()) and month(@datePara)=month(getdate()) then '年月相同' else '年月不相同' end
--获取当前时间[数据库时间] SELECT GETDATE() -- 获取当前的月份 SELECT DATEPART(M,GETDATE()) -- 获取传入时间的月份 SELECT DATEPART(M,'2014-08-01') -- 比较 IF(DATEPART(M,GETDATE()) = DATEPART(M,'2014-08-01')) BEGIN --做操作 SELECT '相同' AS Result END ELSE BEGIN --做操作 SELECT '不相同' AS Result END
考虑到当前日期的格式会各种各样,所以可以参考下面的做法declare @input datetime --set @input='2014-08-01 00:00:00' set @input='2014/8/1 00:00:00' if(YEAR(@input)=YEAR(GETDATE()) and month(@input)=month(getdate())) begin select '相同' end else begin select '不同' end
DECLARE @d DATETIME
SET @d='2009/08/01'SELECT
CASE
WHEN DATEPART(m,@d)=DATEPART(m,GETDATE()) THEN '月份相同'
ELSE '月份不同'
END
DECLARE @d2 datetime
SET @d1 = '2014-08-01'
SET @d2 = '2014-08-31 23:59:59.999'
SELECT CASE WHEN Convert(varchar(7),@d1,120) = Convert(varchar(7),@d1,120)
THEN '同月'
ELSE '不同月'
END
如果是 年月,需要2次,或转为字符串(121模式)后比较前7个字符
DECLARE @d2 datetime
SET @d1 = '2014-08-01'
SET @d2 = '2014-08-31 23:59:59.999'
SELECT CASE WHEN Convert(varchar(7),@d1,120) = Convert(varchar(7),@d1,120)
THEN '同月'
ELSE '不同月'
END
--判断年月
--1
declare @ym datetime = '2014-08-26'
select case
when DATEPART(YY,GETDATE()) = datepart(YY,@ym) and DATEPART(MM,GETDATE()) = datepart(MM,@ym)
then '年月相同'
else '年月不相同'
end
select case
when CONVERT(varchar(6),GETDATE(),112) = CONVERT(varchar(6),@ym,112)
then '年月相同'
else '年月不相同'
end
select case
when CONVERT(varchar(7),GETDATE(),120) = CONVERT(varchar(7),@ym,120)
then '年月相同'
else '年月不相同'
end
--关于convert第三个参数,可以上网上找找相关资料,第三个参数在转换时间的时候,每一种数字,都代表一种时间格式,找到你需要的格式,然后截取做比较,关于varchar(6)或者 varchar(7)这种长度是因为,如果长度不够,会自动截取前?位,?就是你填写的数字,所以可以通过长度控制你需要的年月,然后做对比
其中@datePara 是日期参数
select case when year(@datePara)=year(getdate()) and month(@datePara)=month(getdate())
then '年月相同'
else '年月不相同'
end
--获取当前时间[数据库时间]
SELECT GETDATE()
-- 获取当前的月份
SELECT DATEPART(M,GETDATE())
-- 获取传入时间的月份
SELECT DATEPART(M,'2014-08-01')
-- 比较
IF(DATEPART(M,GETDATE()) = DATEPART(M,'2014-08-01'))
BEGIN
--做操作
SELECT '相同' AS Result
END
ELSE
BEGIN
--做操作
SELECT '不相同' AS Result
END
--set @input='2014-08-01 00:00:00'
set @input='2014/8/1 00:00:00'
if(YEAR(@input)=YEAR(GETDATE()) and month(@input)=month(getdate()))
begin
select '相同'
end
else
begin
select '不同'
end
DECLARE @ym DATETIME = '2014-08-28'
IF CONVERT(VARCHAR(10),GETDATE(),120)=CONVERT(VARCHAR(10),@ym,120)
PRINT '年月相同'
ELSE
PRINT '年月不相同'