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

2016-01-29 16:22 9 1 收藏

SQL Server 某些条件下求某日的日期,SQL Server 某些条件下求某日的日期

【 tulaoshi.com - SQLServer 】

 

/*需要得结果: 某一天的日期
已知条件: 这天的年,月,星期几,在这个月中处于第几周

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/sqlserver/)

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')) --得到日期对应的星期代号

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/sqlserver/)

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)

 

来源:https://www.tulaoshi.com/n/20160129/1498433.html

延伸阅读
标签: PHP
  //在PHP中处理日期非常不方便,比如求两个日期之间相差的月份?该怎么办呢?  //文件名:date.inc.php3  //在使用这两个函数前,要先将日期或日期时间转换成timestamp类型。  //如:  //$today=mktime(0,0,0,date("m"),date("d"),date("Y"));  /****模拟sqlserver中的dateadd...
MSSQL差异备份,就是和前一次备份作对比,把不一样的内容备份下来,这样,只要前一次备份后,插入新的内容,差异备份就可以把刚插入的内容备份出来,而这个备份文件将大大减少,得到webShell的成功也提高了不少!  差异备份的流程大概这样: 1.完整备份一次(保存位置当然可以改) backup database 库名 to disk ...
这些存储过程如下: sp_makewebtask xp_cmdshell xp_dirtree xp_fileexist xp_terminate_process sp_oamethod sp_oacreate xp_regaddmultistring xp_regdeletekey xp_regdeletevalue xp_regenumkeys xp_regenumvalues sp_add_job sp_addtask xp_regread xp_regwrite xp_readwebtask xp_makewebtask xp_regremovemultistring ...
标签: SQLServer
  Microsoft SQL Server 2000的数据转换服务(下) 数据泵:转换数据 DTS 数据泵是一个 DTS对象,它驱动数据的导入、导出和转换操作。 在执行数据转换、数据驱动查询和并行数据泵任务期间将使用数据泵。执 行这些任务的过程是:在源和目标连接上创建行集合,然后创建数据泵实 例在源和目标间移动这些行。在复制每一行时,将进...
标签: PHP
    1 修改 php.ini 里连接库配置     在 exttension 里找到extension=php_mssql.dll, 去除前面的";" ,然后记得把 php.ini 复制一份到 NT 目录下面。     2 修改 dll 的指向     改为你的真实位置extension_dir = c:\php4     3 在 MS SQL ...

经验教程

116

收藏

64
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部