SQL Server 日期和时间

日期和事件类型:

数据类型

存储大小(字节)

日期范围

准确度

推荐格式及示例

DateTime

8

1753-01-01到9999-12-31

3.33毫秒

'YYYYMMDD hh:mm:ss.nnn'

SmallDateTime

4

1900-01-01到2079-06-06

1分钟

'YYYYMMDD hh:mm'

Date

3

0001-01-01到9999-12-31

1天

'YYYY-MM-DD'

Time

3到5

00:00:00.0000000到

23:59:59.9999999

100纳秒

'hh:mm:ss.nnnnnnn'

DateTime2

6到8

0001-01-01 00:00:00.0000000到

9999-12-31 23:59:59.999999999

100纳秒

'YYYY-MM-DD hh:mm:ss.nnnnnnn’

DateTimeOffSet

8到10

0001-01-01 00:00:00.0000000到

9999-12-31 23:59:59.999999999

100纳秒

'YYYY-MM-DD hh:mm:ss.nnnnnnn [+|-] hh:mm’

 

    注意:Time,DateTime2,DateTimeOffSet的存储空间大小依赖于所选择的精度(precision).可以通过0到7之间的整数来指定其精度,分别代表不同小数位数的秒数的精度。例如,Time(0)表示秒的精度只有0位小数,即只能精确到秒。SQL Server默认精度设置为7

 

 

返回当前日期和时间的函数

函数

返回类型

描述

GetDate

DateTime

当前日期和时间

Current_TimeStamp

DateTime

与GetDate相同,而且是ANSI SQL(优先使用)

GetUTCDate

DateTime

以UTC格式表示当前日期和时间

SYSDateTime

DateTime2

当前日期和时间

SYSUTCDateTime

DateTime2

以UTC格式表示当前日期和时间

SYSDateTimeOffSet

DateTimeOffSet

当前日期和时间,包含时区偏移量

 

 

函数

介绍

语法

备注

cast

转换数据类型

cast(expression AS data_type [ (length ) ])

是ANSI标准SQL,因此优先使用cast

convert

转换数据类型

 

convert (data_type [(length)] , expression [ , style ] )

101,美国,mm/dd/yyyy

103,英国,dd/mm/yyyy

switchoffset

根据输入的datetimeoffset类型的值得到相对应time_zone时区的时间

switchoffset(datetimeoffset_value,time_zone)

如:select switchoffset(sysdatetimeoffset(),’-05:00’),如果当前为北京时区,-08:00,时间为10点,则结果为-05:00时区的13点

todatetimeoffset

将datetime2类型的输入值转换成时区为time_zong时区的datetimeoffset值

TODATETIMEOFFSET ( expression , time_zone )

如:SELECT TODATETIMEOFFSET (getdate(), '-07:00')

如果当前时间为10:00,则结果为10:00 –07:00

dateadd

以指定的日期的部分为单位,

为输入的日期和时间值增加指定的量

dateadd(part,n,dt_val)

 

datediff

返回两个日期和时间之间的指定部分的

数值差

datediff(part,dt_val1,dt_val2)

 

datepart

返回一个表示给定日期和时间值的指定部分的

整数

datepart(part,dt_val)

year,month,day是datepart的简略版本

datename

返回给定日期和时间值的指定部分的

字符串

datename(part,dt_val)

返回的结果依赖于数据库的语言设置

isdate

判断字符串能否转换成日期和时间数据

isdate(string)

如果能,返回1;如果不能,返回0

 

part

part

缩写

year

yy,yyyy

quarter

qq,q

month

mm,m

dayofyear

dy,y

day

dd,d

week

wk,ww

dayofweek

dw,w

hour

hh

minute

mi,n

second

ss,s

millisecond

ms

microsecond

mcs

nanosecond

ns

 
得出月份的最后一天  select dateadd(month,datediff(month,’1999-12-31’,'要计算的日期'),'1999-12-31’),同理可以得到年的最后一天,计算第一天将'1999-12-31’改成'2000-01-01’即可
posted on 2010-04-13 00:06  天空一角  阅读(3728)  评论(0编辑  收藏  举报