2月5日

数据库日期函数

a. 一个月的第一天
SELECT  DATEADD(mm,  DATEDIFF(mm,0,getdate()),  0)  

b. 本周的星期一
SELECT  DATEADD(wk,  DATEDIFF(wk,0,getdate()),  0) 

c. 一年的第一天
SELECT  DATEADD(yy,  DATEDIFF(yy,0,getdate()),  0)  

d. 季度的第一天
SELECT  DATEADD(qq,  DATEDIFF(qq,0,getdate()),  0)  

e. 上个月的最后一天 
SELECT  dateadd(ms,-3,DATEADD(mm,  DATEDIFF(mm,0,getdate()),  0))  

f. 去年的最后一天
SELECT  dateadd(ms,-3,DATEADD(yy,  DATEDIFF(yy,0,getdate()),  0)) 

g. 本月的最后一天
SELECT  dateadd(ms,-3,DATEADD(mm,  DATEDIFF(m,0,getdate())+1,  0))  

h. 本月的第一个星期一
select  DATEADD(wk,  DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate)),getdate))),0)

i. 本年的最后一天
SELECT  dateadd(ms,-3,DATEADD(yy,  DATEDIFF(yy,0,getdate())+1,  0))。


Sql Server中的日期与时间函数 
1.  当前系统日期、时间 
    select getdate()  

2. dateadd  在向指定日期加上一段时间的基础上,返回新的 datetime 值
   例如:向日期加上2天 
   select dateadd(day,2,'2004-10-15')  --返回:2004-10-17 00:00:00.000 

3. datediff 返回跨两个指定日期的日期和时间边界数。
   select datediff(day,'2004-09-01','2004-09-18')   --返回:17

4. datepart 返回代表指定日期的指定日期部分的整数。
  SELECT DATEPART(month, '2004-10-15')  --返回 10

5. datename 返回代表指定日期的指定日期部分的字符串
   SELECT datename(weekday, '2004-10-15')  --返回:星期五

6. day(), month(),year() --可以与datepart对照一下

select 当前日期=convert(varchar(10),getdate(),120) 
,当前时间=convert(varchar(8),getdate(),114) 

select datename(dw,'2004-10-15') 

select 本年第多少周=datename(week,'2004-10-15')
      ,今天是周几=datename(weekday,'2004-10-15')