-- 本月的第一天
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
-- 本月的最后一天
SELECT DATEADD(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))
-- 上个月的第一天
SELECT DATEADD(m,-1, DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
-- 上个月的最后一天
SELECT DATEADD(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
-- 本周的星期一
SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
-- 本周的周日
SELECT DATEADD(d,+6 ,DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) )
-- 上周的星期一
SELECT DATEADD(d,-7 ,DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) )
-- 上周的周日
SELECT DATEADD(d,-1 ,DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) )
-- 一年的第一天
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
-- 季度的第一天
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
-- 去年的最后一天
SELECT DATEADD(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
-- 本月的第一个星期一
SELECT DATEADD(wk, DATEDIFF(wk,0,DATEADD(dd,6-datepart(day,getdate)),getdate))),0)
-- 本年的最后一天
SELECT DATEADD(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- Sql Server中的日期与时间函数 -- 当前系统日期、时间
SELECT getdate()
-- DATEADD 在向指定日期加上一段时间的基础上,返回新的 datetime 值
例如:向日期加上2天
SELECT DATEADD(day,2,'2004-10-15') -- 返回:2004-10-17 00:00:00.000
-- datediff 返回跨两个指定日期的日期和时间边界数。
SELECT datediff(day,'2004-09-01','2004-09-18') -- 返回:17
-- datepart 返回代表指定日期的指定日期部分的整数。
SELECT DATEPART(month, '2004-10-15') -- 返回 10
-- datename 返回代表指定日期的指定日期部分的字符串
SELECT datename(weekday, '2004-10-15') -- 返回:星期五
-- day(), month(),year() -- 可以与datepart对照一下
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --
SELECT 当前日期=convert(varchar(10),getdate(),120)
SELECT 当前时间=convert(varchar(8),getdate(),114)
SELECT datename(dw,'2004-10-15')
SELECT 本年第多少周=datename(week,'2004-10-15')
SELECT 今天是周几=datename(weekday,'2004-10-15')