快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

SQL SERVER 某些条件下求某日的日期

举例说明: 希望求出2004-11-22
已知条件: 2004年, 11 月, 星期一 ,这天在11月是第四面

declare @year numeric(4),@month numeric(2),@weekday varchar(6),@week numeric(1)
set @year=2004
set @month=11
set @weekday=\\\'星期一\\\'
set @week=4
*/

alter function RequestDate
(@year numeric(4),@month numeric(2),@weekday varchar(6),@week numeric(1))
returns datetime as
begin

declare @date1 varchar(10) --得到该月的第一天的日期
declare @month1 varchar(2)

if @month<10
set @month1=\\\'0\\\'+ltrim(rtrim(str(@month)))
else
set @month1=ltrim(rtrim(str(@month)))

set @date1=ltrim(rtrim(str(@year))) + \\\'-\\\' + @month1+ \\\'-\\\' + \\\'01\\\'

declare @num1 numeric(3)
declare @num2 numeric(3)
declare @num3 numeric(3)
set @num1=datepart(ww,@date1) --得到该月的第一天在该年的周数
set @num1=@num1+@week-2 --得到该月的要求得的那天所在的周数与该年的第一周第一天的周数差

set @num2=datepart(dw,dateadd(ww,@num1,\\\'2004-01-01\\\')) --得到日期对应的星期代号

select @num3=case @weekday
when \\\'星期日\\\' then 1
when \\\'星期一\\\' then 2
when \\\'星期二\\\' then 3
when \\\'星期三\\\' then 4
when \\\'星期四\\\' then 5
when \\\'星期五\\\' then 6
when \\\'星期六\\\' then 7
end

return dateadd(dd,@num3-datepart(dw,dateadd(ww,@num1,\\\'2004-01-01\\\')),dateadd(ww,@num1,\\\'2004-01-01\\\'))

end


-- select dbo.RequestDate(2004,11,\\\'星期一\\\',4)
返回类别: 教程
上一教程: ORACLE中解决汉字无法显示、输入问题
下一教程: SQL SERVER和ORACLE常用函数对比

您可以阅读与"SQL SERVER 某些条件下求某日的日期"相关的教程:
· 一个得到在两个日期之间的休息日的SQL SERVER 的函数
· 如何使Microsoft SQL Server的日志文件不会增大?
· SQL SERVER日期计算
· SQL Server日期计算
· 如何使Microsoft SQL Server的日志文件不会增大?
    微笑服务 优质保证 索取样品