日期时间函数可用在SELECT语句的选择列表或用在查询的WHERE子句中,下面将给出SQL Server中重用的日期时间函数。
由于排版问题,就没有将这些函数表格都贴上来。下面就这些日期时间函数做具体的使用。
1. GETDATE()获取到当前时间
按datetime值的SQL Server标准内部格式返回当前系统日期和时间。
select GETDATE()
在下方结果栏中显示
2016-05-14 12:00:51.737
2. DAY(),MONTH(),YEAR()函数中使用GETDATE()函数,用来返回当前时间的日、月、年
--DAY DAY ( date ) 返回表示指定 date 的“日”部分的整数。 int 具有确定性
--MONTH MONTH ( date ) 返回表示指定 date 的“月”部分的整数。 int 具有确定性
--YEAR YEAR ( date ) 返回表示指定 date 的“年”部分的整数。 int 具有确定性
--其日期值应在1753年到9999年之间
--这是SQL Server系统所能识别的日期范围,否则会出现错误。
--函数GETDATE()获取到当前时间
select DAY(GETDATE()) as '日'
,MONTH(GETDATE()) as '月'
,YEAR(GETDATE()) as '年'
14 5 2016
3.运用DATEPART函数,返回代表指定日期的指定日期部分的整数
--运用DATEPART函数,返回代表指定日期的指定日期部分的整数
SELECT DATEPART(DAY , GETDATE()) as '日'
,DATEPART(MONTH , GETDATE()) as '月'
,DATEPART(YEAR , GETDATE()) as '年'
14 5 2016
4.用 DATEADD ()函数来获得下一个时间或之前的时间日期
DATEADD DATEADD (datepart , number , date ) 通过将一个时间间隔与指定 date 的指定 datepart 相加,返回一个新的 datetime 值。
--用 dateadd 来获得下一个时间或之前的时间日期
select GETDATE() as '获取当前时间'
--获取当前时间
, DATEADD (DD , 1 , getdate()) as '当前时间的下一天'
--当前时间的下一天
, DATEADD (MM , 1 , getdate()) as '当前时间的下一个月'
--当前时间的下一个月
, DATEADD (YY , 1 , getdate()) as '当前时间的下一年'
--当前时间的下一年
, DATEADD (DD , -1 , getdate()) as '当前时间的前一天'
--当前时间的前一天
, DATEADD (MM , -1 , getdate()) as '当前时间的前一个月'
--当前时间的前一个月
, DATEADD (YY , -1 , getdate()) as '当前时间的前一年'
--当前时间的前一年
获取当前时间 2016-05-14 12:12:29.137
当前时间的下一天 2016-05-15 12:12:29.137
当前时间的下一个月 2016-06-14 12:12:29.137
当前时间的下一年 2017-05-14 12:12:29.137
当前时间的前一天 2016-05-13 12:12:29.137
当前时间的前一个月 2016-04-14 12:12:29.137
当前时间的前一年 2015-05-14 12:12:29.137
5.DATEDIFF()函数。
DATEDIFF ( datepart , startdate , enddate ) 返回两个指定日期之间所跨的日期或时间 datepart 边界的数目。
SELECT DATEDIFF(DD,'2016-5-12',GETDATE()) as '相差天数' --时间差,返回日期
SELECT DATEDIFF(MM,'2016-4-12',GETDATE()) as '相差月份' --时间差,返回月份
SELECT DATEDIFF(YY,'2000-5-14',GETDATE()) as '相差年份' --时间差,返回年份
2 1 16
6.DATENAME()函数。
DATENAME DATENAME ( datepart , date ) 返回表示指定日期的指定 datepart 的字符串。 nvarchar
SELECT DATENAME(year, GETDATE()) --年
,DATENAME(month, GETDATE()) --月
,DATENAME(day, GETDATE()) --日
,DATENAME(week,GETDATE()) --星期
,DATENAME(dayofyear, GETDATE()) --当前年份第多少天
,DATENAME(weekday, GETDATE()); --星期
2016 05 14 20 135 星期六
同样DATENAME()函数还能够和GETDAY()函数一起用,GETDAY()函数大致个GETDATE()函数一样。
SELECT DATENAME(hour, GETDATE()) as '时' --当天的第几个小时
,DATENAME(minute,GETDATE()) as '分' --当天小时的第几分
,DATENAME(second, GETDATE()) as '秒'; --当天小时分钟的第几秒
时 分 秒
12 24 19
7.T-SQL的日期时间函数。
--select GETDATE()
--截取一个时间的年,月,日
--函数GETDATE()获取到当前时间
--select DAY(GETDATE()) as '日'
-- ,MONTH(GETDATE()) as '月'
-- ,YEAR(GETDATE()) as '年'
--其日期值应在1753年到9999年之间
--这是SQL Server系统所能识别的日期范围,否则会出现错误。
--运用DATEPART函数,返回代表指定日期的指定日期部分的整数
--SELECT DATEPART(DAY , GETDATE()) as '日'
-- ,DATEPART(MONTH , GETDATE()) as '月'
-- ,DATEPART(YEAR , GETDATE()) as '年'
--用 dateadd 来获得下一个时间或之前的时间日期
--select GETDATE() as '获取当前时间'
-- --获取当前时间
-- , DATEADD (DD , 1 , getdate()) as '当前时间的下一天'
-- --当前时间的下一天
-- , DATEADD (MM , 1 , getdate()) as '当前时间的下一个月'
-- --当前时间的下一个月
-- , DATEADD (YY , 1 , getdate()) as '当前时间的下一年'
-- --当前时间的下一年
-- , DATEADD (DD , -1 , getdate()) as '当前时间的前一天'
-- --当前时间的前一天
-- , DATEADD (MM , -1 , getdate()) as '当前时间的前一个月'
-- --当前时间的前一个月
-- , DATEADD (YY , -1 , getdate()) as '当前时间的前一年'
-- --当前时间的前一年
--SELECT DATEDIFF(DD,'2016-5-12',GETDATE()) as '相差天数' --时间差,返回日期
--SELECT DATEDIFF(MM,'2016-4-12',GETDATE()) as '相差月份' --时间差,返回月份
--SELECT DATEDIFF(YY,'2000-5-14',GETDATE()) as '相差年份' --时间差,返回年份
--SELECT DATENAME(year, GETDATE()) --年
-- ,DATENAME(month, GETDATE()) --月
-- ,DATENAME(day, GETDATE()) --日
-- ,DATENAME(week,GETDATE()) --星期
-- ,DATENAME(dayofyear, GETDATE()) --当前年份第多少天
-- ,DATENAME(weekday, GETDATE()); --星期
--SELECT DATENAME(hour, GETDATE()) as '时' --当天的第几个小时
-- ,DATENAME(minute,GETDATE()) as '分' --当天小时的第几分
-- ,DATENAME(second, GETDATE()) as '秒'; --当天小时分钟的第几秒
--函数 语法 返回值 返回数据类型
--DAY DAY ( date ) 返回表示指定 date 的“日”部分的整数。 int 具有确定性
--MONTH MONTH ( date ) 返回表示指定 date 的“月”部分的整数。 int 具有确定性
--YEAR YEAR ( date ) 返回表示指定 date 的“年”部分的整数。 int 具有确定性
--DATENAME DATENAME ( datepart , date ) 返回表示指定日期的指定 datepart 的字符串。 nvarchar
--DATEPART DATEPART ( datepart , date ) 返回表示指定 date 的指定 datepart 的整数。 int
--DATEDIFF DATEDIFF ( datepart , startdate , enddate ) 返回两个指定日期之间所跨的日期或时间 datepart 边界的数目。 int 具有确定性
--DATEADD DATEADD (datepart , number , date ) 通过将一个时间间隔与指定 date 的指定 datepart 相加,返回一个新的 datetime 值。
--ISDATE ISDATE ( expression ) 确定 datetime 或 smalldatetime 输入表达式是否为有效的日期或时间值。
-- int 只有与 CONVERT 函数一起使用,同时指定了 CONVERT 样式参数且样式不等于 0、100、9 或 109 时,ISDATE 才是确定的。
注意:上面代码都注释了,用的时候撤销注释就行。