SQL Server DATEPART() 函数----(用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等):http://www.w3school.com.cn/sql/func_datepart.asp
SQL Server DATEDIFF() 函数----(返回两个日期之间的时间):
http://www.w3school.com.cn/sql/func_datediff.asp
SQL Server DATEADD() 函数----(在日期中添加或减去指定的时间间隔)
语法:DATEADD(datepart,number,date)
学习 :
month(create_day)=month(getdate())本月
month(create_day)=month(getdate())-1 上月
--本月
select count(*) from User
where datepart(mm,create_day) = datepart(mm,getdate())
--上月
select count(*) from User
where datepart(mm,create_day) = datepart(mm,getdate()) - 1
--求两个时间相差天数
select datediff(day,'2004-01-01',getdate())
--本周
select count(*) from User
where datediff(dd,create_day,getdate()) <= datepart(dw,getdate())
--上周
select count(*) from User
where datediff(dd,create_day,(getdate() - datepart(dw,getdate()))) <= 7
--1.一个月第一天
SELECT dateadd(mm, DATEDIFF(mm,0,getdate()), 0)
--2.本周的星期一
SELECT dateadd(wk, DATEDIFF(wk,0,getdate()), 0)
select dateadd(wk,datediff(wk,0,getdate()),6) --一年的第一天
SELECT dateadd(yy, DATEDIFF(yy,0,getdate()), 0)
--一季度的第一天
SELECT dateadd(qq, DATEDIFF(qq,0,getdate()), 0)
--当天的凌晨
SELECT dateadd(dd, DATEDIFF(dd,0,getdate()), 0)
--上个月的最后一天
SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
--去年的最后一天
SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
--本月的最后一天
SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate())+1, 0))
--本年的最后一天
SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))
--本月的第一个星期一
select DATEADD(wk,
DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)--查询本周注册人数
--上周注册人数
select count(*) from [user]
where datediff(week,create_day-1,getdate())=1
--获取本月信息
select * from user
where datediff(month,create_day,getdate())=0
--获取上月信息
select * from user
where datediff(month,create_day,getdate())=1
--如果要效率,这样写查询
--查询本周注册人数
select * from user
where create_day>=dateadd(day,2-datepart(weekday,getdate()),convert(varchar,getdate(),112))
and create_day<dateadd(day,9-datepart(weekday,getdate()),convert(varchar,getdate(),112))
--上周注册人数
select * from user
where create_day>=dateadd(day,-5-datepart(weekday,getdate()),convert(varchar,getdate(),112))
and create_day<dateadd(day,2-datepart(weekday,getdate()),convert(varchar,getdate(),112))
--本月注册人数
select * from user
where create_day>=dateadd(day,1-day(getdate()),convert(varchar,getdate(),112))
and create_day<dateadd(month,1,dateadd(day,1-day(getdate()),convert(varchar,getdate(),112)))
--上月注册人数
select * from user
where create_day>=dateadd(month,-1,dateadd(day,1-day(getdate()),convert(varchar,getdate(),112)))
and create_day<dateadd(day,1-day(getdate()),convert(varchar,getdate(),112))
--今日记录
SELECT * from feedback WHERE (DATEDIFF(d,fedtime,GETDATE())=0) ORDER BY fedid DESC
--当月共多少天
select day(dateadd(ms,-3,DATEADD(m, DATEDIFF(m,0,getdate())+1,0)))
--当月第一天
select dateadd(d,-day(getdate())+1,getdate())
扩充C#知识:
--今天星期几:
DateTime.Parse(DateTime.Now.ToShortDateString()).DayOfWeek) (注:Sunday = 0)
--获取本月第一天:
new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
--本月共多少天:
DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month)