时间的获取方法

SQL code
    
    
DECLARE @dt datetime SET @dt = GETDATE () DECLARE @number int SET @number = 3 -- 1.指定日期该年的第一天或最后一天 -- A. 年的第一天 SELECT CONVERT ( char ( 5 ), @dt , 120 ) + ' 1-1 ' -- B. 年的最后一天 SELECT CONVERT ( char ( 5 ), @dt , 120 ) + ' 12-31 ' -- 2.指定日期所在季度的第一天或最后一天 -- A. 季度的第一天 SELECT CONVERT ( datetime , CONVERT ( char ( 8 ), DATEADD ( Month , DATEPART (Quarter, @dt ) * 3 - Month ( @dt ) - 2 , @dt ), 120 ) + ' 1 ' ) -- B. 季度的最后一天(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 ) -- C. 季度的最后一天(直接推算法) SELECT DATEADD ( Day , - 1 , CONVERT ( char ( 8 ), DATEADD ( Month , 1 + DATEPART (Quarter, @dt ) * 3 - Month ( @dt ), @dt ), 120 ) + ' 1 ' ) -- 3.指定日期所在月份的第一天或最后一天 -- A. 月的第一天 SELECT CONVERT ( datetime , CONVERT ( char ( 8 ), @dt , 120 ) + ' 1 ' ) -- B. 月的最后一天 SELECT DATEADD ( Day , - 1 , CONVERT ( char ( 8 ), DATEADD ( Month , 1 , @dt ), 120 ) + ' 1 ' ) -- C. 月的最后一天(容易使用的错误方法) SELECT DATEADD ( Month , 1 , DATEADD ( Day , - DAY ( @dt ), @dt )) -- 4.指定日期所在周的任意一天 SELECT DATEADD ( Day , @number - DATEPART (Weekday, @dt ), @dt ) -- 5.指定日期所在周的任意星期几 -- A. 星期天做为一周的第1天 SELECT DATEADD ( Day , @number - ( DATEPART (Weekday, @dt ) + @@DATEFIRST - 1 ) % 7 , @dt ) -- B. 星期一做为一周的第1天 SELECT DATEADD ( Day , @number - ( DATEPART (Weekday, @dt ) + @@DATEFIRST - 2 ) % 7 - 1 , @dt ) 1 .一个月第一天的 Select DATEADD (mm, DATEDIFF (mm, 0 , getdate ()), 0 ) 2 .本周的星期一 Select DATEADD (wk, DATEDIFF (wk, 0 , getdate ()), 0 ) 3 .一年的第一天 Select DATEADD (yy, DATEDIFF (yy, 0 , getdate ()), 0 ) 4 .季度的第一天 Select DATEADD (qq, DATEDIFF (qq, 0 , getdate ()), 0 ) 5 .当天的半夜 Select DATEADD (dd, DATEDIFF (dd, 0 , getdate ()), 0 ) 6 .上个月的最后一天 Select dateadd (ms, - 3 , DATEADD (mm, DATEDIFF (mm, 0 , getdate ()), 0 )) 7 .去年的最后一天 Select dateadd (ms, - 3 , DATEADD (yy, DATEDIFF (yy, 0 , getdate ()), 0 )) 8 .本月的最后一天 Select dateadd (ms, - 3 , DATEADD (mm, DATEDIFF (m, 0 , getdate ()) + 1 , 0 )) 9 .本年的最后一天 Select dateadd (ms, - 3 , DATEADD (yy, DATEDIFF (yy, 0 , getdate ()) + 1 , 0 )) 10 .本月的第一个星期一 select DATEADD (wk, DATEDIFF (wk, 0 , dateadd (dd, 6 - datepart ( day , getdate ()), getdate ())), 0 ) 返回当前日期和时间 通过函数GETDATE(),你可以获得当前的日期和时间。函数GETDATE()可以用来作为DATEDIME型字段的缺省值。这对插入记录时保存当时的时间是有用的。要建立一个表,其中的记录包含有当前的日期和时间,可以添加一个DATETIME型字段,指定其缺省值为函数GETDATE()的返回值,就象这样: Create TABLE site_log ( username VARCHAR ( 40 ), useractivity VARCHAR ( 100 ), entrydate DATETIME DEFAULT GETDATE ()) 转换日期和时间 函数GETDATE()的返回值在显示时只显示到秒。实际上,SQL Sever内部时间可以精确到毫秒级(确切地说,可以精确到3.33毫秒)。 要得到不同格式的日期和时间,你需要使用函数CONVERT()。例如,当下面的这个语句执行时,显示的时间将包括毫秒: Select CONVERT ( VARCHAR ( 30 ), GETDATE (), 9 )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值