SqlServer2008实例43日期函数

    SQL Server肯几种用来存储日期和时间数据的数据类型:datetime、datetime2、date、time、datatimeoffset和smalldatetime。SQL Server提供了一些使用这些日期函数

函数名描  述
DATEADDDATEADD根据指定的问隔和数字返回一个增加或减少后的新同期
DATEDIFFDATEDIFF从第_1个日期减去第—个日期,并生成一个指定的datepart码格式的值
DATENAMEDATENAME返阿datepart码指定的一部分日期的字符串值
DATEPART这个函数返回datepart码指定的一部分日期的整数值
DAY, MONTH和YEARDAY返同表示日的整数值,MONTH返回表示月的整数,而YEAR返问表示计算日期的年的整数
GETDATE,GETUTCOATE和CURRENT TIIMESTAMPGETDATE和CURRENT TIMESTAMP都返回当前的日期和时间.GETUTCOATE返同格林
尼治平时(UTC)
ISDATE当表示式为有效日期或时间时.ISDATE返回l(true),否则返同0(false)
SYSDATETIME,SYSUTCDATE TiME和SYSDATETIMEOFFSETSYSDATETIHE以datetime2的形式返回当前日期和时间.SYSUTCDATETIME以datetime2的形式返回UTC。SYSDATETIMEOFFSET返回当前日期和时问,并以datetimeoffset的|形式返回当前时区和UTC之问小时分钟的偏移量.这些函数以10毫秒的精度返回时间
  SWITCHOFFSETSWITCHOFFSET允许你以datetimeoffset数据类型形式将既有的时区偏移量修改为新的偏移量
TODATETIMEOFFSETTODATETIMEOFFSET允许你将日期和时问值修故为拼定的时区偏移量,并以datetimeoffset的数据类型彤式返回值

1.返回当前日期和时间

  GETDATE和CURRENT_TIMESTAMP都返回当前的日期和时间。GETUTCDATE返回协调世界时。SQL Server 2008的新日期函数SYSDATETIME和SYSUTCDATETIME提供了10毫秒精度的日期和时间。SYSDATETIMEOFFSET也提供了这个级别的精度,但它还包括了同UTC的小时分钟的偏移量。
    示例:回当前日期和时间,还有世界协调时和相应应的偏移量:

SET NOCOUNT ON

SELECT 'CurrDateAndTime_HighPrecision',SYSDATETIME()

SELECT 'UniversalTimeCoordinate_HighPrecision',SYSUTCDATETIME()

SELECT 'CurrDateAndTime_HighPrecision_UTC_Adjust',SYSDATETIMEOFFSET()

2.在时区间进行转换

       datetimeoffset数据类型的值表示以UTC时间为参考的指定时区的日期和时间。例如,u.s.东部标准时区被定义为UTC - 5:00  (UTC减5小时)。可以通过调用SWITCHOFFSETF函数数将datetimeoffset值在时区之间进行转换。

     示例:输入值从UTC - 5:00转换为UTC +3:00:

SELECT SWITCHOFFSET('2007-08-12 09:43:25.9783262 -05:00','+03:00')

    示例2:TODATETIMEOFFSET把常规的datetime数据类型值(没有相关联的时区)转换为datetlmeaffset数据类型值:

SELECT TODATETIMEOFFSET('2007-08-12 09:43:25','-05:00')

3.增加或减少日期值

DATEADD返回一个新的日期,它是增加或减少另外一个日期表达式的结果。语法如下:
DATEADD (datepart,number,date)
datepart部分用于指定要修改日期的哪一部分时间,    

                                   datepart代码

代码描  述
yy或yyyy
qq或q季度
mm或m
dy或y年中第几天
dd或d
wk或ww
dw或w星期几
hh小时
mi或n分钟
ss或s
ms毫秒

  DATEADD函数的第二个参数是要增加或减少日期的数字值(正数或负数)。第三个参数是要修改的日期。
示例1:将日期减一年:

SELECT DATEADD(YY,-1,'4/2/2009')

示例2:将日期增加一个季度:

SELECT DATEADD(q,1,'4/2/2009')

示例3:将一个日期减少6个月

SELECT DATEADD(mm,-6,'4/2/2009')

示例4:日期增加50天

SELECT DATEADD(d,50,'4/2/2009')

示例5:将日期和时间减少30分钟

SELECT DATEADD(mi,-30,'2009-01-01 23:30:00.000')

4.找出两个日期的差

    DATEDIFF让第二个日期减去第一个日期,产生一个指定的datepart代码格式的值。DATEDIFF的语法如下:
    DATEDIFF(datepart,startdate,enddate)
    第一个datepart代码使用和DATEADD相同的datepart代码。第二个和第三个参数是参与减法的日期值。
    示例:DATEOIFF函数来找出两个日期的差:

USE AdventureWorks
GO

--找出当前时间和EndDate之间的差
SELECT ProductID,
       GETDATE() Today,
       EndDate,
       DATEDIFF(m,EndDate,GetDATE()) MonthsFromNow
FROM Production.productCostHistory
WHERE EndDate IS NOT NULL  

5.显示日期一部分的字符串值

DATENAME返回以datepart代码指定的部分日期的字符串值。语法如下:
DATENAME(datepart,date)
第二个参数指定了字符串值基于的日期。
示例:DATENAME返回指定日期是星期几:

USE AdventureWorks
GO

--显示EndDate这天是星期几
SELECT ProductID,
       EndDate,
       DATENAME(DW,EndDate) WeekDay
FROM Production.ProductCostHistory
WHERE EndDate IS NOT NULL      

6.使用DATEPART显示日期一部分的整数值

这个函数根据datepart指定的部分日期返回整数值。 DATEPART语法如下:
DATEPART(datepart,date)
第二个参数date指定了要计算整数值的日期。
示例1:根据选择的日期部分返回年值:

SELECT DATEPART(YY,GETDATE())

示例2:显示当前月份的整数值:

SELECT DATEPART(m,GETDATE())

7.使用YEAR、MONTH和DAY显示日期一部分的整数值

也可以使用单个参数的函数来显示日、月和年的整数值:
示例1:返回当前年:

SELECT YEAR(GETDATE())

示例2:返回当前月

SELECT MONTH(GETDATE())

示例3:返回当前日:

SELECT DAY(GETDATE())


 

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页