SQL时间比较问题

小龙11 2013-11-25 03:29:49
在SQL语句中,用Datediff函数可以判断两个日期相差的天数。我想问一下,如果其中有一个日期是“11-20”只有月份和日期,另一个是用Getdate函数获取的日期。怎么来判断两个日期之间相差的天数。

...全文
328 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChinaITOldMan 2013-11-26
  • 打赏
  • 举报
回复
declare @a datetime set @a='2013-'+日期+' 00:00:00.000' select datediff(dd,@a,getdate())
LongRui888 2013-11-25
  • 打赏
  • 举报
回复
引用 18 楼 aqbj_28 的回复:
datetime
比如改成 @time varchar(10)
LongRui888 2013-11-25
  • 打赏
  • 举报
回复
引用 18 楼 aqbj_28 的回复:
datetime
改成varchar就行了,你再试试
小龙11 2013-11-25
  • 打赏
  • 举报
回复
datetime
LongRui888 2013-11-25
  • 打赏
  • 举报
回复
引用 16 楼 aqbj_28 的回复:
我是放在存储过程中调用。直接用Select 运行可以读出数据。用变量传递进去就会报错。
哦 @time变量是什么类型呢
小龙11 2013-11-25
  • 打赏
  • 举报
回复
我是放在存储过程中调用。直接用Select 运行可以读出数据。用变量传递进去就会报错。
發糞塗牆 2013-11-25
  • 打赏
  • 举报
回复
还有3楼的
  • 打赏
  • 举报
回复
引用 7 楼 TravyLee 的回复:
declare @year int
set @year=2013
select DATEDIFF(DD,LTRIM(@year)+'-'+'11-02',getdate()) as days

days
--------
23
引用 12 楼 aqbj_28 的回复:
SQL 2005
试过吗
發糞塗牆 2013-11-25
  • 打赏
  • 举报
回复
05好像没datename函数
小龙11 2013-11-25
  • 打赏
  • 举报
回复
SQL 2005
小龙11 2013-11-25
  • 打赏
  • 举报
回复
我原来的语句是:datediff (day,getdate(),'2013-'+@time
發糞塗牆 2013-11-25
  • 打赏
  • 举报
回复
你的是2000还是05还是08?
LongRui888 2013-11-25
  • 打赏
  • 举报
回复
引用 8 楼 aqbj_28 的回复:
[quote=引用 4 楼 yupeigu 的回复:] 这样:



select datediff(day,datename(year,getdate())+'-11-20',GETDATE())
/*
5
*/
我按这个方法做,在传递日期进去时,还是报错。我的语句是: datediff(day,datename(year,getdate())+'-'+@time,GETDATE()) @time中的日期格式是:11-20 [/quote] 哦 你的@time是什么类型的呢
小龙11 2013-11-25
  • 打赏
  • 举报
回复
引用 4 楼 yupeigu 的回复:
这样:



select datediff(day,datename(year,getdate())+'-11-20',GETDATE())
/*
5
*/
我按这个方法做,在传递日期进去时,还是报错。我的语句是: datediff(day,datename(year,getdate())+'-'+@time,GETDATE()) @time中的日期格式是:11-20
  • 打赏
  • 举报
回复
declare @year int
set @year=2013
select DATEDIFF(DD,LTRIM(@year)+'-'+'11-02',getdate()) as days

days
--------
23
hyjjune 2013-11-25
  • 打赏
  • 举报
回复
没有年份不好比的,只有一个日期的话2013-11-20跟 2012-11-20 差365天呢。

select Datediff(dd,convert(date,convert(varchar,DATEPART(yy,getdate()))+'-'+'11-20'),getdate())

select datediff(day,datename(year,getdate())+'-'+'11-20',GETDATE())
jwwyqs 2013-11-25
  • 打赏
  • 举报
回复
只能默认一个年份
LongRui888 2013-11-25
  • 打赏
  • 举报
回复
这样:



select datediff(day,datename(year,getdate())+'-11-20',GETDATE())
/*
5
*/
發糞塗牆 2013-11-25
  • 打赏
  • 举报
回复
declare @a datetime set @a='2013-'+日期+' 00:00:00.000' select datediff(dd,@a,getdate())
LongRui888 2013-11-25
  • 打赏
  • 举报
回复
那这个只有月和日的,年份是算当年吗
加载更多回复(1)

34,592

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧