MS-SQL Server日期函数小结

1 . YEAR , MONTH , DAY函数

YEAR , MONTH , DAY函数可以提取函数DATETIME数据类型中的年、月、日信息

if object_id('[tb]') is not null drop table [tb]

go

create table [tb]([BirthDay] datetime)

insert [tb]

 

select '2010-05-15 12:10.000' union all

select '2010-01-25 02:11.000' union all

select '2010-03-20 23:55.000' union all

select '2010-02-22 22:20.000' union all

select '2010-05-29 11:11.000' union all

select '2010-04-17 20:02.000' 

 

将出生年月日分开显示:

 

select year(BirthDay) as '出生年份',month(BirthDay) as '出生月份',day(BirthDay) as '具体那天'

from [tb] order by BirthDay

 

结果为

 

出生年份   出生月份   具体哪天

------------------------------

2010       1          25

2010       2          22

2010       3          20

2010       4          17

2010       5          15

2010       5          29

 

将日期组合起来:

 

select BirthDay,cast(year(BirthDay) as varchar(4))+''

+cast(month(BirthDay) as varchar(2))+''

+cast(day(BirthDay) as varchar(2))+'' as '出生年月'

from [tb]

order by BirthDay 

 

结果

 

BirthDay                 出生年月

-------------------------------------

2010-01-25 02:11:00.000 2010125

2010-02-22 22:20:00.000 2010222

2010-03-20 23:55:00.000 2010320

2010-04-17 20:02:00.000 2010417

2010-05-15 12:10:00.000 2010515

2010-05-29 11:11:00.000 2010529

 

2 . GETDATE 函数

GETDATE 函数用于获取当前系统日期时间

 

select convert(varchar,getdate(),20) as '现在的时间'

结果

现在的时间

----------------------------------

2010-07-02 13:39:53

 

select cast(getdate() as char(20)) as '现在的时间'

结果

现在的时间

----------------------------

07  2 2010  1:42PM  

 

3 . DATEADD函数

DATEADD函数用于计算将当前时间延后的日期

语法:DATEADD( datepart , number , date )

datepart指定要返回新值的日期的组成部分,见下表

number用于与datepart相加的值,若为非整数,小数部分被舍去  

date表达式用于返回datetimesmalldatetime值,或日期格式的字符串 

 

select dateadd(day,10,getdate()) as '天后的现在时间为'

结果

十天后的现在时间为

--------------------------

2010-07-12 13:46:40.280

 

4 . DATEDIFF函数

DATEDIFF函数用于计算两个日期之间的差值

use practiceDB

GO

create table studentInfo

(

sno char(15),

sname char(10),

sex char(3),

birthday datetime

)

 

insert studentInfo

 

select '10001','李华','','1987-02-15 11:50.259' union all

select '10005','霍思敏','','1989-12-05 10:22.000' union all

select '10012','黄玲','','1977-05-11 01:44.009' union all

select '10011','顾唯','','1999-02-01 00:55.200' union all

select '10024','郝丽荣','','2001-10-10 03:50.200' union all

select '10019','马龙','','1961-08-14 09:51.229' union all

select '10027','孙虎','','1991-12-12 12:51.000'

 

select sno,sname,sex,birthday,datediff(year,birthday,getdate()) as '年龄'

from studentInfo

order by sno

 

结果

Sno             sname      sex  birthday                 年龄

-------------------------------------------------------------

10001           李华       男  1987-02-15 11:50:00.260   23

10005           霍思敏     女  1989-12-05 10:22:00.000   21

10011           顾唯       女  1999-02-01 00:55:00.200   11

10012           黄玲       女  1977-05-11 01:44:00.010   33

10019           马龙       男  1961-08-14 09:51:00.230   49

10024           郝丽荣     女  2001-10-10 03:50:00.200   9

10027           孙虎       男  1991-12-12 12:51:00.000   19

 

5 . DATENAME函数

DATENAME函数返回表示指定日期的指定日期部分的字符串

语法:DATENAME( < datepart > , < date > )

datepart是指定要返回id日期部分的参数

日期部分

缩写

year

yy , yyyy

quarter

qq , q

month

mm,m

dayofyear

dy , y

day

dd , d

week

wk , ww

weekday

dw

hour

hh

minute

mi , n

second

ss , s

millisecond

ms

weekday (dw) 日期部分返回星期几(如星期日、星期一等)。 

dateb表达式,用于返回datetime smalldadtetime值,或日期格式的字符串

返回结果:nvarchar

 

SELECT DATENAME(year, GETDATE()) AS 'Year Name'

结果

Year  Name

----------------

2010

 

SELECT DATENAME(month, GETDATE()) AS 'Month Name'

结果

Month Name

----------------

07

 

SELECT DATENAME(weekday, GETDATE()) AS 'Day Name'

结果

Day Name

-------------

星期五

 

6 . DATEPART函数

DATEPART函数返回表示指定日期的指定日期部分的整数

语法:DATEPART( <datepart> , <date> )

datepart参数同上表

date表达式,用于返回datetimesmalldatetime值,或日期格式的字符串

返回类型:int

 

select datepart(month,getdate()) as 'Month Number'

结果

Month Number

------------------

07

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值