SQL Server日期函数应用

SQL SERVER 中提供了日期时间相关的函数,在编写SQL时,根据实际的业务要求,选择合适的函数使用。

日期函数应用:

1.获取当前日期时间

  GETDATE()

2.获取日期时间中的一部分数据

  DATENAME datepart , date )  返回date中datepart部分的字符串

  DATEPART( datepart date ) 返回date中datepart部分的整数

  YEAR( date )   返回date中整数年

  MONTH( date )   返回date中整数月

  DAY( date )     返回date中整数日

3.日期时间差和运算

  DateDiff (datepart ,date1,date2)  返回date2 与date1两个日期之间用datepart部分运算的差值

  DateAdd (datepart ,number,date)    返回date的datepart部分加上number之后的日期

4.获取指定格式的日期时间字符串

  CONVERT(varchar(100),GetDate(),23)  返回 yyyy-mm-dd格式

  其他格式大全汇总



函数:GETDATE()

SELECT GETDATE()
--结果:2017-09-08 10:55:03.957 


文中函数的datepart参数使用

下表列出了 Microsoft? SQL Server? 识别的日期部分和缩写。

日期含义 英文全拼 缩写 备注
year yy, yyyy  
季度 quarter qq, q  
month mm, m  
第几天(本年中) dayofyear dy, y  
day dd, d  
第几周(本年中) week wk, ww  
星期几 weekday dw 周日是1  周六是7
Hour hh  
minute mi, n  
second ss, s  
毫秒 millisecond ms

 


函数:DATENAME datepart , date 返回date中datepart 部分的字符串类型结果  datepart 参数说明详见

Select Datename(yyyy,GetDate())+‘-‘+Datename(month,GetDate())+‘-‘+Datename(dd,GetDate()),Datename(dw,GetDate())
--结果:2017-09-8    星期五


函数:DATEPARTdatepart , date 返回date中datepart部分的整数类型结果  datepart 参数说明详见

Select DATEPART(year,GetDate()),DATEPART(month,GetDate()),DATEPART(day,GetDate())
--结果:2017    9    8


函数:YEAR( date ) 返回date中年份的整数类型结果

SELECT YEAR(GETDATE())
--结果:2017


函数:MONTH( date ) 返回date中月份的整数类型结果

SELECT MONTH(GETDATE())
--结果:9


函数:DAY( date )  返回date中日期的整数类型结果

SELECT DAY(GETDATE())
--结果:8


函数:DateDiff (datepart ,date1,date2)   返回date2 与date1两个日期之间用datepart部分运算的差值  datepart 参数说明详见

SELECT DATEDIFF(YEAR,‘2013-05-01‘,‘2017-09-08 16:26:26.300‘)     --相差 4 年度
SELECT DATEDIFF(QQ,‘2013-05-01‘,‘2017-09-08 16:26:26.300‘)        --相差 17 季度
SELECT DATEDIFF(MM,‘2013-05-01‘,‘2017-09-08 16:26:26.300‘)        --相差 52 月
SELECT DATEDIFF(DD,‘2013-05-01‘,‘2017-09-08 16:26:26.300‘)        --相差 1591 天
SELECT DATEDIFF(HH,‘2013-05-01‘,‘2017-09-08 16:26:26.300‘)        --相差 38200 小时


函数:DateAdd (datepart ,number,date)    返回date的datepart部分加上number之后的日期  datepart 参数说明详见

SELECT DATEADD(YEAR,3,‘2017-09-08 16:26:26‘)     --加3年    2020-09-08 16:26:26.000
SELECT DATEADD(YEAR,-3,‘2017-09-08 16:26:26‘)    --减3年    2014-09-08 16:26:26.000
SELECT DATEADD(QQ,3,‘2017-09-08 16:26:26‘)       --加3季度  2018-06-08 16:26:26.000  --9月
SELECT DATEADD(MM,3,‘2017-09-08 16:26:26‘)       --加3个月  2017-12-08 16:26:26.000
SELECT DATEADD(MI,3,‘2017-09-08 16:26:26‘)       --加3分钟  2017-09-08 16:29:26.000


函数:Convert(varchar(100),date,样式号)  返回date特定样式的日期时间字符串结果

内置的样式很多,我做了下分类:

1.仅有时间部分,不包含日期

SELECT CONVERT(varchar(100), GETDATE(),  24) --17:22:16
SELECT CONVERT(varchar(100), GETDATE(),   8) --17:22:16
SELECT CONVERT(varchar(100), GETDATE(), 108) --17:22:16
SELECT CONVERT(varchar(100), GETDATE(),  14) --17:22:16:213
SELECT CONVERT(varchar(100), GETDATE(), 114) --17:22:16:213

2.用 “-” 做为日期分隔符

                                             --YYYY-MM-DD HH:MI:SS:MS
SELECT CONVERT(varchar(100), GETDATE(),  23) --2017-09-08
SELECT CONVERT(varchar(100), GETDATE(),  20) --2017-09-08 17:36:40
SELECT CONVERT(varchar(100), GETDATE(), 120) --2017-09-08 17:36:40
SELECT CONVERT(varchar(100), GETDATE(),  21) --2017-09-08 17:36:40.523
SELECT CONVERT(varchar(100), GETDATE(), 121) --2017-09-08 17:36:40.523
SELECT CONVERT(varchar(100), GETDATE(),  25) --2017-09-08 17:36:40.523
SELECT CONVERT(varchar(100), GETDATE(), 126) --2017-09-08T17:36:40.523

                                             --DD-MM-YYYY
SELECT CONVERT(varchar(100), GETDATE(),   5) --08-09-17
SELECT CONVERT(varchar(100), GETDATE(), 105) --08-09-2017

                                             --MM-DD-YYYY
SELECT CONVERT(varchar(100), GETDATE(),  10) --09-08-17
SELECT CONVERT(varchar(100), GETDATE(), 110) --09-08-2017

3.用 “/” 做为日期分隔符

                                             --YYYY-MM-DD
SELECT CONVERT(varchar(100), GETDATE(),  11) --  17/09/08
SELECT CONVERT(varchar(100), GETDATE(), 111) --2017/09/08

                                             --MM-DD-YYYY
SELECT CONVERT(varchar(100), GETDATE(),  22) --09/08/17  5:51:49 PM
SELECT CONVERT(varchar(100), GETDATE(),   1) --09/08/17
SELECT CONVERT(varchar(100), GETDATE(), 101) --09/08/2017

                                             --DD-MM-YYYY
SELECT CONVERT(varchar(100), GETDATE(),   3) --08/09/17
SELECT CONVERT(varchar(100), GETDATE(), 103) --08/09/2017

4.用 ”." 做为日期分隔符

                                             --YYYY.MM.DD
SELECT CONVERT(varchar(100), GETDATE(),   2) --  17.09.08
SELECT CONVERT(varchar(100), GETDATE(), 102) --2017.09.08

                                             --DD.MM.YYYY
SELECT CONVERT(varchar(100), GETDATE(),   4) --08.09.17
SELECT CONVERT(varchar(100), GETDATE(), 104) --08.09.2017

5.用 空格 做为日期分隔符

                                             --MM DD YYYY HH:MI:SS:MS
SELECT CONVERT(varchar(100), GETDATE(),   0) --09  8 2017  5:28PM
SELECT CONVERT(varchar(100), GETDATE(), 100) --09  8 2017  5:28PM
SELECT CONVERT(varchar(100), GETDATE(),   9) --09  8 2017  5:28:37:473PM
SELECT CONVERT(varchar(100), GETDATE(), 109) --09  8 2017  5:28:37:473PM

                                             --DD MM YYYY HH:MI:SS:MS
SELECT CONVERT(varchar(100), GETDATE(),   6) --08 09 17
SELECT CONVERT(varchar(100), GETDATE(), 106) --08 09 2017
SELECT CONVERT(varchar(100), GETDATE(),  13) --08 09 2017 17:29:58:170
SELECT CONVERT(varchar(100), GETDATE(), 113) --08 09 2017 17:29:58:170

6.特殊格式,空格 和逗号分割

                                             --DD MM,YYYY
SELECT CONVERT(varchar(100), GETDATE(),   7) --09 08, 17
SELECT CONVERT(varchar(100), GETDATE(), 107) --09 08, 2017

7.无间隔

                                             --YYYYMMDD
SELECT CONVERT(varchar(100), GETDATE(),  12) --  170908
SELECT CONVERT(varchar(100), GETDATE(), 112) --20170908
时间: 2024-12-29 01:43:53

SQL Server日期函数应用的相关文章

四个很好用的Sql Server 日期函数:DateDiff、DatePart、DateAdd、DateName

我以前查一段时间范围内的数据都是在程序里计算好日期再掉查询语句,现在我用下面的函数.SQL SERVER没有查一季度数据的函数. DateDiff函数: 描述 返回两个日期之间的时间间隔. 语法 DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]]) DateDiff 函数的语法有以下参数: 参数 描述 interval 必选.字符串表达式,表示用于计算 date1 和 date2 之间的时间间隔.有关数值,请参

SQL Server日期函数总结

获得一个月的天数:首先到得一个月最后一天的日期,通过 SQL Server 日期函数 day() 取得日期中的“天 ”部分 获得 2008 年 2 月份的天数:select day(cast('2008-03-01' as datetime) - 1) 获得本月天数: 返回一个整数,该整数表示指定的 date 是该月份的哪一天. select day(dateadd(month,1,getdate()) - day(getdate())) 获得上个月天数:select day(getdate()

SQL Server 日期函数:某天是星期几?

[鹏城万里] 发表于 www.sqlstudy.com 要得到某一天是星期几,需要用到 SQL Server 中的日期函数:datename(). 今天是星期几,例子 1: set language N'English' select datename(weekday, getdate()) Wednesday 今天是星期几,例子 2: set language N'Simplified Chinese' select datename(weekday, getdate()) 星期三 今天是星期

SQL Server日期函数

当前系统日期.时间 select getdate() 2015-06-18 14:52:27.123 提取日期中的数据 day(), month(),year() select getdate(); – 2015-06-18 14:52:27.123 select YEAR(getdate()); – 2015 select MONTH(getdate()); – 6 select day(getdate()); – 18 日期格式转换 CONVERT SELECT CONVERT(char(1

sql server 日期函数 [LocalTimeToUTC]、[UtcToLocalTime]、ConverToMidnight函数

AX 2012表定义中,datetime类型默认值为utc微秒置0,之前的procedure 中日期有的是hardcode,谈判有的是getdate(),在马拉,太国,turky,US,格林威冶时间,us turky与祖国有时差 对比 select dateadd(millisecond, -datepart(millisecond,getutcdate()),getutcdate()) SELECT getdate(),getdate(),getdate(),getdate() 如图 同一查询

SQL Server日期时间格式转换字符串详解

1.日期时间转字符串 Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006  10:57AMSelect CONVERT(varchar(100), GETDATE(), 1): 05/16/06Select  CONVERT(varchar(100), GETDATE(), 2): 06.05.16Select CONVERT(varchar(100),  GETDATE(), 3): 16/05/06Select CONVERT(var

数据库开发基础-SQl Server 聚合函数、数学函数、字符串函数、时间日期函数

SQL 拥有很多可用于计数和计算的内建函数. 函数的语法 内建 SQL 函数的语法是: SELECT function(列) FROM 表 函数的类型 在 SQL 中,基本的函数类型和种类有若干种.函数的基本类型是: Aggregate 函数 Scalar 函数 合计函数(Aggregate functions) Aggregate 函数的操作面向一系列的值,并返回一个单一的值. 注释:如果在 SELECT 语句的项目列表中的众多其它表达式中使用 SELECT 语句,则这个 SELECT 必须使

SQL Server 常用函数和日期操作

一.字符转换函数 1.ASCII() 返回字符表达式最左端字符的ASCII 码值. 在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错. print ASCII('123456')    =>    49 print ASCII(123456)     =>    49 print ASCII('abc')         =>    97 2.CHAR() 将ASCII 码转换为字符.如果没有输入0 ~ 255 之间的ASCII

SQL Server系统函数:日期函数

原文:SQL Server系统函数:日期函数 1.返回当前日期和时间 select GETDATE() '当前日期-精确到33毫秒' select GETUTCDATE() 'UTC日期和时间-精确到33毫秒' select SYSDATETIME() '当前日期和时间-精确到100纳秒(高精度)' select SYSUTCDATETIME() 'UTC-精确到100纳秒(高精度)' select SYSDATETIMEOFFSET()'当前日期与UTC之间的差值(时分)' 2.转换偏移,从一