Sql server中对时间类型的字段转换(2)

来源:未知 责任编辑:责任编辑 发表时间:2015-09-16 20:04 点击:
 
2、日期推算处理
DECLARE @dt datetime
SET @dt=GETDATE()
DECLARE @number int
SET @number=3
  www.2cto.com  
  1.指定日期该年的第一天或最后一天
  1.1 年的第一天
SELECT CONVERT(char(5),@dt,120)+'1-1'
 
  1.2 年的最后一天
SELECT CONVERT(char(5),@dt,120)+'12-31'
 
  2.指定日期所在季度的第一天或最后一天
  2.1 季度的第一天
SELECT CONVERT(datetime,CONVERT(char(8),DATEADD(Month,DATEPART(Quarter,@dt)*3-Month(@dt)-2,
@dt),120)+'1')
  2.2 季度的最后一天(CASE判断法)
SELECT CONVERT(datetime,CONVERT(char(8),DATEADD(Month,DATEPART(Quarter,@dt)*3-Month(@dt),@dt),120)+CASE WHEN DATEPART(Quarter,@dt) in(1,4)THEN '31'ELSE '30' END)
 
  2.3 季度的最后一天(直接推算法)
SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1+DATEPART(Quarter,@dt)*3-Month(@dt),@dt),120)+'1')
 
  3.指定日期所在月份的第一天或最后一天
  3.1 月的第一天
SELECT CONVERT(datetime,CONVERT(char(8),@dt,120)+'1')
 
  3.2 月的最后一天
SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,@dt),120)+'1')
 
  3.3 月的最后一天(容易使用的错误方法)
SELECT DATEADD(Month,1,DATEADD(Day,-DAY(@dt),@dt))
  www.2cto.com  
  3.4 指定日期所在周的任意一天
SELECT DATEADD(Day,@number-DATEPART(Weekday,@dt),@dt)
 
  5.指定日期所在周的任意星期几
  5.1 星期天做为一周的第1天
SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt)
 
  5.2 星期一做为一周的第1天
SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt)
 
 
 
作者 dudumao
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • sql常见面试题
  • SQL SERVER 2005性能之跟踪
  • LINUX上RMAN自动备份脚本
  • sql server 列转行
  • SQL SERVER2008日常自动化备份
  • SQL Server 2005 镜像构建手册
  • SQL编程(一)
  • 如何将多个SQL查询统计结果一次显示出来
  • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色

数据库技术导航

SqlserverMysqlOracleDB2数据库数据库综合
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1