设为首页 收藏本站
查看: 761|回复: 0

[经验分享] SQL日期时间函数总结(MSSQL)

[复制链接]

尚未签到

发表于 2018-10-19 13:06:05 | 显示全部楼层 |阅读模式
  时间类型实际上为浮点数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 [SQLServer].[nbbs].[dbo].[TopicCurrent] with(nolock) Where Convert(varchar(10),[日期字段2],120) = Convert(varchar(10),getDate(),120)



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-623684-1-1.html 上篇帖子: php中防止SQL注入的方法 下篇帖子: 10条SQL优化语句,让你的MySQL数据库跑得更快!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表