请教高手:如何用sql取得到上旬的最后一天(高分)

yangwl 2008-06-21 05:13:43
上月和上日的都搞定了,还差上旬的不知道怎么办?
...全文
218 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
wgzaaa 2008-06-24
  • 打赏
  • 举报
回复
这个没问题了
select dateadd(d,-day(@date)+ 10*((day(@date)-1)/10-day(@date)/31) ,@date)
pt1314917 2008-06-24
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 happyflystone 的回复:]
请问楼主是以前陶清坛上的杨威利?
[/Quote]

靠,小枪还有老熟人?
dobear_0922 2008-06-24
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 wgzaaa 的回复:]
如果是18楼的意思就可以简化为:
select dateadd(d,-day(@date)+10*(day(@date)/10),@date)
[/Quote]

不能这么简化,否则遇到10,20,30,31会出错。
wgzaaa 2008-06-24
  • 打赏
  • 举报
回复
sorry,有问题,简化不了多少
select dateadd(d,-day(@date)+(case when day(@date)=31 then 20 else 10*(day(@date)/10)end),@date)
hanjs 2008-06-24
  • 打赏
  • 举报
回复
还是没有懂lz想要啥,拿数据说话看看!!
dobear_0922 2008-06-24
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 happyflystone 的回复:]
上旬和上一旬 可不一样哦
[/Quote]
wgzaaa 2008-06-24
  • 打赏
  • 举报
回复
如果是18楼的意思就可以简化为:
select dateadd(d,-day(@date)+10*(day(@date)/10),@date)
yangwl 2008-06-24
  • 打赏
  • 举报
回复
biti 的杨威利 ,至于注册过什么论坛我都忘记了,马上结贴
cxmcxm 2008-06-23
  • 打赏
  • 举报
回复
上旬:-当月天数
中旬:-当月天数+10
下旬:-当月天数+20
declare @date datetime
set @date='2008-6-22'
select case when day(@date)<=10 then dateadd(d,-day(@date),@date)
when day(@date) between 11 and 20 then dateadd(d,-day(@date)+10,@date)
else dateadd(d,-day(@date)+20,@date) end
-狙击手- 2008-06-23
  • 打赏
  • 举报
回复
请问楼主是以前陶清坛上的杨威利?
-狙击手- 2008-06-23
  • 打赏
  • 举报
回复
挺 PT
-狙击手- 2008-06-23
  • 打赏
  • 举报
回复
上旬和上一旬 可不一样哦
pt1314917 2008-06-23
  • 打赏
  • 举报
回复

--修改下:

declare @date datetime
set @date=getdate()
select 上旬最后一天=case datepart(dd,@date)/10
when 0 then dateadd(dd,-1,convert(varchar(7),@date,120)+'-01')
when 1 then convert(varchar(7),@date,120)+'-10'
else convert(varchar(7),@date,120)+'-20' end


pt1314917 2008-06-23
  • 打赏
  • 举报
回复

declare @date datetime
set @date=getdate()
select 上旬最后一天=case datepart(dd,@date)/10
when 0 then dateadd(dd,-1,convert(varchar(7),@date,120)+'-01')
when 1 then convert(varchar(7),@date,120)+'-10'
when 2 then convert(varchar(7),@date,120)+'-20' end


hery2002 2008-06-23
  • 打赏
  • 举报
回复
每月10号了,
[code=SQL]
declare @dt datetime
set @dt =getdate()
SELECT DATEADD(day,10,DATEADD(Day,-DAY(@dt),@dt)) as d
/*
d
-----------------------
2008-06-10 21:51:58.280

*/code]
wzy_love_sly 2008-06-23
  • 打赏
  • 举报
回复
是这意思吗
wzy_love_sly 2008-06-23
  • 打赏
  • 举报
回复
declare @dt datetime
set @dt='2008-01-09'
select case
when datepart(dd,@dt) between 0 and 10 then dateadd(dd,-1,convert(varchar(7),@dt,120)+'-01')
when datepart(dd,@dt) between 11 and 20 then convert(varchar(7),@dt,120)+'-10'
when datepart(dd,@dt) between 21 and 31 then convert(varchar(7),@dt,120)+'-20'
end


2007-12-31 00:00:00.000
jhwcd 2008-06-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 perfectaction 的回复:]
上旬是什么意思?什么叫上旬?
[/Quote]
何为上旬,一头雾水!!!
yangwl 2008-06-23
  • 打赏
  • 举报
回复
就是给定日期的上一旬的最后一天
nzperfect 2008-06-21
  • 打赏
  • 举报
回复
上旬是什么意思?什么叫上旬?
加载更多回复(6)

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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