查询每个月的最大天数

zkvistor 2013-03-13 06:58:32
问题1
查询每个月的最大天数,SQL实现 ?

问题2



SQL1:
If not exist (select * from table1 where tr=’SW’)
begin
select ‘ Not Exist’;
end
else
begin
select ‘Exist’;
end
SQL2:
If exist (select * from table1 where tr=’SW’)
begin
select ‘Exist’;
end
else
begin
select ‘Not Exist’;
end
2.

上面这两个SQL语句有什么不同?
...全文
354 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
milkman_nuaa 2013-03-19
  • 打赏
  • 举报
回复
1. print datediff(day, '2013-3-1', '2013-4-1') 2. 没看明白,不是一样的么。难道有什么短路相关的门道在里面?
fsdfasdfdsaf 2013-03-18
  • 打赏
  • 举报
回复
思路:用上个月的第一天-1天 就可以得到最大日了
苦苦的潜行者 2013-03-16
  • 打赏
  • 举报
回复
谁出的题,没看懂什么意思...
-Tracy-McGrady- 2013-03-15
  • 打赏
  • 举报
回复
下个月第一天减去1就是本月最大天数了,SQL SERVER而言
Vidor 2013-03-15
  • 打赏
  • 举报
回复
自己挑,要哪段时期的: select dateadd(month,number,-1), day(dateadd(month,number,-1)) from master..spt_values where type='P'
引用 8 楼 zkvistor 的回复:
引用 楼主 zkvistor 的回复:问题1 查询每个月的最大天数,SQL实现 ? 问题2 SQL code?12345678910111213141516171819SQL1:If not exist (select * from table1 where tr=’SW’)beginselect ‘ Not Exist’;endelsebeginselect……
ycj80 2013-03-15
  • 打赏
  • 举报
回复

select cast(year(dateadd(m,number,getdate())) as varchar(4))+'年'+cast(number as varchar(2))+'月' as ym,
	day(dateadd(d,-day(dateadd(m,number,getdate())),dateadd(m,number,getdate()))) as d
 from master..spt_values
 where type='P' and number>0 and number <20
zkvistor 2013-03-15
  • 打赏
  • 举报
回复
引用 楼主 zkvistor 的回复:
问题1 查询每个月的最大天数,SQL实现 ? 问题2 SQL code?12345678910111213141516171819SQL1:If not exist (select * from table1 where tr=’SW’)beginselect ‘ Not Exist’;endelsebeginselect ‘Exist’;endSQL2:If……
这两SQL 没区别。。。。 我被“吓唬”错了
zkvistor 2013-03-15
  • 打赏
  • 举报
回复
引用 6 楼 Vidor 的回复:
引用 3 楼 zkvistor 的回复:引用 2 楼 Vidor 的回复:1 select day(dateadd(month, datediff(month,-1,getdate()), -1)) 2 一样 如果是要查出这样的结果 1月 31 2月 28 3 31 4 30 。。。。。 该如何。。。? 领会错误,这样……
这个查出来的是当前月的最大天数,那其他月了?
Vidor 2013-03-13
  • 打赏
  • 举报
回复
引用 3 楼 zkvistor 的回复:
引用 2 楼 Vidor 的回复:1 select day(dateadd(month, datediff(month,-1,getdate()), -1)) 2 一样 如果是要查出这样的结果 1月 31 2月 28 3 31 4 30 。。。。。 该如何。。。?
领会错误,这样? select month(getdate()) as month, day(dateadd(month, datediff(month,-1,getdate()), -1)) as days
hgwyl1 2013-03-13
  • 打赏
  • 举报
回复
下个月的1号减1天 判断一下月份值,12月—1月,其他月份+1
Vidor 2013-03-13
  • 打赏
  • 举报
回复
引用 3 楼 zkvistor 的回复:
引用 2 楼 Vidor 的回复:1 select day(dateadd(month, datediff(month,-1,getdate()), -1)) 2 一样 如果是要查出这样的结果 1月 31 2月 28 3 31 4 30 。。。。。 该如何。。。?
闰年2月29被你吞了,不是YYYY+M谈最大天数没意义。
zkvistor 2013-03-13
  • 打赏
  • 举报
回复
引用 2 楼 Vidor 的回复:
1 select day(dateadd(month, datediff(month,-1,getdate()), -1)) 2 一样
如果是要查出这样的结果 1月 31 2月 28 3 31 4 30 。。。。。 该如何。。。?
Vidor 2013-03-13
  • 打赏
  • 举报
回复
1 select day(dateadd(month, datediff(month,-1,getdate()), -1)) 2 一样
  • 打赏
  • 举报
回复
1. select datediff(day,convert(varchar(7),getdate(),120)+'-01',dateadd(month,1,convert(varchar(7),getdate(),120)+'-01')) 2.
if @a=@b
print '相等'
else print '不相等'
if @a!=@b
 print '不相等'
else print '相等'
的区别

34,590

社区成员

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

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