高峰之巅 发表于 2018-10-19 13:06:05

SQL日期时间函数总结(MSSQL)

  时间类型实际上为浮点数Double类型,大小为8个字节(Byte)。
  时间单位:1天=1,1小时=1/24,1分钟=1/60/24,1秒=1/60/60/24
  Sql Server中的日期与时间函数:
  

select getdate() --当前系统日期、时间  
select GETUTCDATE()--GetUTCDate 获取UTC时间值
  
select year(getdate())    --获取年度信息YEAR (year函数以int数据类型的格式返回特定日期的年度信息)
  
select month(getdate())--获取月份信息MONTH(month函数以int数据类型的格式返回特定日期的月份信息)
  
select day(getdate())   --获取天数信息day(day函数以int数据类型的格式返回特定日期的天数信息)
  

  

  datepart( datepart , 日期字段)   --获取任意时间部分DatePart(datepart函数以int数据类型的格式返回某个日期时间数据的指定部分)datepart:特定的要返回的数据的格式代码
  Datepart部分的取值如下所示:
  返回年度信息Year、YYYY、YY
  返回月份信息Month、MM、M
  返回日期信息Day、DD、D
  返回周信息   Week、WK、WW
  返回每周星期几信息   WeekDay、DW
  返回季度信息Quarter、QQ、Q
  返回一年中第几天的信息 DayOfYear、DY、Y
  返回小时信息Hour、HH
  返回分钟信息Minute、MI、N
  返回秒信息   Second、SS、SS
  返回毫秒信息MillSecond、MS
  

select dateadd(day,2,'2010-10-15')--,返回:2010-10-17 00:00:00.000(向日期加上2天)  
select dateadd(day,-2,'2010-10-15')--返回:2010-10-13 00:00:00.000(向日期减去2天)
  
select dateadd(month,-2,'2010-10-15')--返回:2010-08-15 00:00:00.000(向日期减去2月)
  
select datediff(day,'2004-09-01','2004-09-18')   --datediff ,返回:17(返回跨两个指定日期的日期和时间边界数)
  
select * from test where datediff(day,Rq,getdate()) = 0 --其中Rq为日期列,此行代码的意思是什么呢?getdate()减去Rq列的值为0,Rq列的值与今天相减,号数为0  
  select DATEPART(month,getdate())--返回 10(datepart 返回当前日期的月份部分的整数)
  select DATEPART(Day,getdate())      --返回 当前日期的天数部分的整数
  select DATEPART(hour,getdate())         --返回 当前日期的小时部分的整数
  select DATEPART(minute,getdate())       --返回 当前日期的分钟部分的整数
  select datename(weekday,getdate())--返回:星期五(datename 返回代表指定日期的指定日期部分的字符串)
  
select datename(dw,getdate())      --当前日期是星期几
  
select datepart(Quarter,getdate()) --现在是第几季度
  
select本年第多少周=datename(week,getdate()) ,
  今天是周几=datename(weekday,getdate())
  
select 当前日期=convert(varchar(10),getdate(),120) ,当前时间=convert(varchar(8),getdate(),114)(day(), month(),year() --可以与datepart对照一下)
  

  SQLServer 2008中新增的日期时间型函数:
  SysDateTime 和 SysUTCDate 在秒小数部分精度上要比 GetDate 和 GetUTCDate 高。 SysDateTimeOffset 包含系统时区偏移量。 SysDateTime、SysUTCDate 和 SysDateTimeOffset 可分配给采用任意日期和时间类型的变量。
  sysdatetime函数以datetime2(7)数据类型的格式返回当前系统的日期和时间。其语法格式为sysdatetime()。返回值有七个小数位,但只精确到10毫秒。数据库偏移量未包含在内。
  sysdatetimeoffset函数以datetimeoffset(7)数据类型的格式返回当前系统的日期和时间。其语法格式为sysdatetimeoffset()。返回值有七个小数位,但只精确到10毫秒。数据库时区偏移量包含在内。
  

ISDATE(expression)--判断是否为日期数据isDate  
SELECT SYSDATETIME()   --获取系统时间 SysDateTime
  
SELECT sysdatetimeoffset()   --获取当前日期和时间 SysDateTimeOffset
  
select SysUTCDateTime()    --获取系统UTC时间 SysUTCDateTime`
  
SELECT CURRENT_TIMESTAMP    --Current_TimeStamp当前数据库系统时间戳
  
SELECT SWITCHOFFSET (SysDateTimeOffset(), '+07:00')--SWITCHOFFSET更改时间偏移量
  
SELECT TodateTimeOffset(GetDate(),'+07:00')    --TodateTimeOffset  datetime2转datetimeoffset
  

  统计语句
  1、--统计当前【>当天00点以后的数据】
  SELECT * FROM 表 WHERE CONVERT(Nvarchar, 日期字段, 111) = CONVERT(Nvarchar, GETDATE(), 111)   ORDER BY 日期字段 DESC
  2、--统计本周
  SELECT * FROM 表 WHERE datediff(week,[日期字段],getdate())=0
  3、--统计本月
  SELECT * FROM 表 WHERE datediff(month,[日期字段],getdate())=0
  4、统计当前
  

SELECT * FROM 表 WHERE datediff(day,[日期字段1],getdate())=0  
Select * From ... with(nolock) Where Convert(varchar(10),[日期字段2],120) = Convert(varchar(10),getDate(),120)


页: [1]
查看完整版本: SQL日期时间函数总结(MSSQL)