📄 subject_51685.htm
字号:
<p>
序号:51685 发表者:tomato907 发表日期:2003-09-03 13:55:15
<br>主题:SQL日期函数
<br>内容:1.在SQL中可否有函数可从资料表中随机的读取N笔资料.<BR>2.本月的第一天,最后一天的函数?<BR>3.每月的总天数,每月有多少个星期六,星期天函数?<BR><BR>谢谢!<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:木一 回复日期:2003-09-03 14:22:59
<br>内容:可以用 <BR>top x 取了记录集的前x条。结合排序,你可以按顺序取出如本月前五条,月周最受欢迎的xxx之类的东西。<BR><BR>复杂的查询可以写成存储过程,你结合sql提供的函数,相信你可以做到。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:yilichen 回复日期:2003-09-03 14:32:37
<br>内容:1.详细点。怎么用?<BR>2.本月的第一天,最后一天的函数?<BR>SELECT CONVERT(VARCHAR(8),GETDATE(),120) + '01'<BR>SELECT DATEADD(DAY,-1,CONVERT(VARCHAR(8),DATEADD(MONTH,1,GETDATE()),120) + '01')<BR>3.每月的总天数,每月有多少个星期六,星期天函数?<BR>DATEPART(DAY, DATEADD(DAY,-1,CONVERT(VARCHAR(8),DATEADD(MONTH,1,GETDATE()),120) + '01'))<BR><BR>SET DATEFIRST 1<BR>4 + CASE WHEN DATEPART(weekday,CONVERT(VARCHAR(8),GETDATE(),120) + '01') > 34- DATEPART(DAY, DATEADD(DAY,-1,CONVERT(VARCHAR(8),DATEADD(MONTH,1,GETDATE()),120) + '01')) THEN 1 ELSE 0 END<BR><BR><BR>SET DATEFIRST 1<BR>4 + CASE WHEN DATEPART(weekday,CONVERT(VARCHAR(8),GETDATE(),120) + '01') > 35- DATEPART(DAY, DATEADD(DAY,-1,CONVERT(VARCHAR(8),DATEADD(MONTH,1,GETDATE()),120) + '01')) THEN 1 ELSE 0 END<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:tomato907 回复日期:2003-09-03 14:52:58
<br>内容:现在每个月我都需要从一个资料表中随机的读取7、8笔或10几笔资料单独作处理,一个月的资料有几十万笔,用手动的从中挑几笔资料很麻烦,用TOP的形式又不是随机的。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:小叶 回复日期:2003-09-03 16:15:27
<br>内容:top是随机的..不加top也是随机了,加了order by ,group by 就不随机.<BR>求本月有多少天数在精华区有.
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:jamesgu2008 回复日期:2003-09-04 08:25:02
<br>内容:mishchen,能解释一些每月有多少个星期六,星期天函数的原理吗?<BR>我把你写的函数拷到查询分析器里,执行报错。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:yilichen 回复日期:2003-09-04 09:33:43
<br>内容:每月的1号 到 (5*7 - 一个月的天数 )号 如果有一个星期天 就有5个星期天 否则 4个
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:yilichen 回复日期:2003-09-04 09:39:16
<br>内容:我把你写的函数拷到查询分析器里,执行报错? add select <BR>也可以把getdate()代替为函数(或。。)的参数,稍做修改就可以。。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:小叶 回复日期:2003-09-04 11:06:15
<br>内容:每个月的第一天是星期是:1, 这个月有30(4,4),31,(4,4) <BR>每个月的第一天是星期是:2, 这个月有30(4,4),31,(4,4)<BR>每个月的第一天是星期是:3, 这个月有30(4,4),31,(4,4)<BR>每个月的第一天是星期是:4, 这个月有30(4,4),31,(5,4)<BR>每个月的第一天是星期是:5, 这个月有30(5,4),31,(5,5)<BR>每个月的第一天是星期是:6, 这个月有30(5,5),31,(5,5)<BR>每个月的第一天是星期是:7, 这个月有30(4,5),31,(4,5)<BR>select 4 + CASE WHEN DATEPART(weekday,CONVERT(VARCHAR(8),GETDATE(),120) + '01') > 34- DATEPART(DAY, DATEADD(DAY,-1,CONVERT(VARCHAR(8),DATEADD(MONTH,1,GETDATE()),120) + '01')) THEN 1 ELSE 0 END<BR>上面可以查询..<BR>但是程序发现了一点小问题..<BR>当每个月的第一天是星期7时有点不对.,<BR>查询有个5星期六个5星期天事实上只有4个星期6,5星期天.<BR><BR><BR>我写一个超笨的.:<BR>declare @a6 int ,@a7 int<BR>if (select DATEPART(weekday,CONVERT(VARCHAR(8),GETDATE(),120) + '01'))=1<BR>begin<BR>select @a6=4<BR>select @a7=4<BR>end<BR>if (select DATEPART(weekday,CONVERT(VARCHAR(8),GETDATE(),120) + '01'))=2<BR>begin<BR>select @a6=4<BR>select @a7=4<BR>end<BR>if (select DATEPART(weekday,CONVERT(VARCHAR(8),GETDATE(),120) + '01'))=3<BR>begin<BR>select @a6=4<BR>select @a7=4<BR>end<BR><BR>if (select DATEPART(weekday,CONVERT(VARCHAR(8),GETDATE(),120) + '01'))=4<BR>and (select DATEPART(DAY, DATEADD(DAY,-1,CONVERT(VARCHAR(8),DATEADD(MONTH,1,GETDATE()),120) + '01')))=31<BR>begin<BR>select @a6=5<BR>select @a7=4<BR>end<BR>if (select DATEPART(weekday,CONVERT(VARCHAR(8),GETDATE(),120) + '01'))=4<BR>and (select DATEPART(DAY, DATEADD(DAY,-1,CONVERT(VARCHAR(8),DATEADD(MONTH,1,GETDATE()),120) + '01')))=30<BR>begin<BR>select @a6=4<BR>select @a7=4<BR>end<BR>if (select DATEPART(weekday,CONVERT(VARCHAR(8),GETDATE(),120) + '01'))=5<BR>begin<BR>select @a6=5<BR>select @a7=5<BR>end<BR>if (select DATEPART(weekday,CONVERT(VARCHAR(8),GETDATE(),120) + '01'))=6<BR>begin<BR>select @a6=5<BR>select @a7=5<BR>end<BR>if (select DATEPART(weekday,CONVERT(VARCHAR(8),GETDATE(),120) + '01'))=7<BR>and (select DATEPART(DAY, DATEADD(DAY,-1,CONVERT(VARCHAR(8),DATEADD(MONTH,1,GETDATE()),120) + '01')))=31<BR>begin<BR>select @a7=5<BR>select @a6=4<BR>end<BR>if (select DATEPART(weekday,CONVERT(VARCHAR(8),GETDATE(),120) + '01'))=7<BR>and (select DATEPART(DAY, DATEADD(DAY,-1,CONVERT(VARCHAR(8),DATEADD(MONTH,1,GETDATE()),120) + '01')))=30<BR>begin<BR>select @a7=5<BR>select @a6=4<BR>end<BR><BR>select "星期六"=@a6<BR>select "星期天"=@a7<BR><BR><BR><BR>直接可以运行..<BR><BR><BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -