葡京网投哪个正规 > 联系我们 > 【葡京网投哪个正规】时间日期加减处理函数,SQL对时间处理的语句小结

原标题:【葡京网投哪个正规】时间日期加减处理函数,SQL对时间处理的语句小结

浏览次数:59 时间:2020-05-08

分享一篇在sql中的一些常用的时间日期处理函数,包括有-DATEPART DATEDIFF CONVERT getdate() DATEADD几个函数

复制代码 代码如下: --获取当前时间 Select getdate() --获取当前年月日 YY代表年,MM代表月,DD代表日,hh代表时,ss代表秒 /* year yy 1753--9999 quarter qq 1--4 month mm 1--12 day of year dy 1--366 day dd 1--31 week wk 1--53 weekday dw 1--7(Sunday--Saturday) hour hh 0--23 minute mi 0--59 second ss 0--59 milisecond ms 0--999 */ --DATEPART与DATENAME实现差不多,都能实现同样效果,DATEPART返回的是整数,DATENAME返回的是字符 Select DATEPART(qq,getdate()) --获取前时间的前几天 -d ;后几天 +d Select getdate()-1 --获得两段时间相距的几年 yy,几月 mm,几日 dd Select DATEDIFF(dd,'2011-7-7',getdate()) --将字符串类型的日期转为日期类型的 Select CONVERT (DATETIME,'2011-8-6')) --在当前时间上加上或减去年月日 Select DATEADD(mm,-2,getdate())

Sql Server中的日期与时间函数

核心提示:本教程为大家介绍SQL语句如何获取特定的日期。

--获取当前时间 Select getdate() --获取当前年月日 YY代表年,MM代表月,DD代表日,hh代表时,ss代表秒 /*

  1. 当前系统日期、时间
    select getdate()

  2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值
    例如:向日期加上2天
    select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000

SQL语句获取特定日期

代码如下复制代码

--当前字段值、加2天、减2天、加2个月、减2个月、加2年、减2年
SELECT CreateTime 字段日期,DATEADD("DAY",2,CreateTime)  加2天,DATEADD("DAY",-2,CreateTime) 减2天,DATEADD("M",2,CreateTime) 加2个月,DATEADD("M",-2,CreateTime) 减2个月,DATEADD("YEAR",2,CreateTime) 加2年,DATEADD("YEAR",-2,CreateTime) 减2年 FROM JT_Biz_Lecture;

1.一个月第一天的

year yy 1753--9999 quarter qq 1--4 month mm 1--12 day of year dy 1--366

--某一字段(日期型)与当前时间作差
SELECT CreateTime,GETDATE() 当前时间,DATEDIFF(day,GETDATE(),CreateTime) 天数 FROM JT_Biz_Lecture;

Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)

day dd 1--31 week wk 1--53 weekday dw 1--7(Sunday--Saturday)

  1. datediff 返回跨两个指定日期的日期和时间边界数。
    select datediff(day,'2004-09-01','2004-09-18') --返回:17

  2. datepart 返回代表指定日期的指定日期部分的整数。
    SELECT DATEPART(month, '2004-10-15') --返回 10

  3. datename 返回代表指定日期的指定日期部分的字符串
    SELECT datename(weekday, '2004-10-15') --返回:星期五

  4. day(), month(),year() --可以与datepart对照一下

2.本周的星期一

hour hh 0--23 minute mi 0--59 second ss 0--59 milisecond ms 0--999 */ --DATEPART与DATENAME实现差不多,都能实现同样效果,DATEPART返回的是整数,DATENAME返回的是字符

select 当前日期=convert(varchar(10),getdate(),120)
,当前时间=convert(varchar(8),getdate(),114)

Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)

代码如下复制代码 Select DATEPART(qq,getdate())

select datename(dw,'2004-10-15')

3.一年的第一天

--获取前时间的前几天 -d ;后几天 +d

select 本年第多少周=datename(week,'2004-10-15')
,今天是周几=datename(weekday,'2004-10-15')

Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)

代码如下复制代码 Select getdate()-1

函数 参数/功能
GetDate( ) 返回系统目前的日期与时间
DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1
DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期
DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值
DateName (interval,date) 返回日期date中,interval指定部分所对应的字符串名称

4.季度的第一天

--获得两段时间相距的几年 yy,几月 mm,几日 dd

参数 interval的设定值如下:

Select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)

代码如下复制代码 Select DATEDIFF(dd,'2011-7-7',getdate())

缩 写(Sql Server) (Access 和 ASP) 说明
Year Yy yyyy 年 1753 ~ 9999
Quarter Qq q 季 1 ~ 4
Month Mm m 月1 ~ 12
Day of year Dy y 一年的日数,一年中的第几日 1-366
Day Dd d 日,1-31
Weekday Dw w 一周的日数,一周中的第几日 1-7
Week Wk ww 周,一年中的第几周 0 ~ 51
Hour Hh h 时0 ~ 23
Minute Mi n 分钟0 ~ 59
Second Ss s 秒 0 ~ 59
Millisecond Ms - 毫秒 0 ~ 999

5.当天的半夜

--将字符串类型的日期转为日期类型的

access 和 asp 中用date()和now()取得系统日期时间;其中DateDiff,DateAdd,DatePart也同是能用于Access和asp中,这些函数的用法也类似

Select DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)

代码如下复制代码 Select CONVERT (DATETIME,'2011-8-6'))

举例:
1.GetDate() 用于sql server :select GetDate()

6.上个月的最后一天

--在当前时间上加上或减去年月日

2.DateDiff('s','2005-07-20','2005-7-25 22:56:32')返回值为 514592 秒
DateDiff('d','2005-07-20','2005-7-25 22:56:32')返回值为 5 天

Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))

代码如下复制代码 Select DATEADD(mm,-2,getdate())

3.DatePart('w','2005-7-25 22:56:32')返回值为 2 即星期一(周日为1,周六为7)
DatePart('d','2005-7-25 22:56:32')返回值为 25即25号
DatePart('y','2005-7-25 22:56:32')返回值为 206即这一年中第206天
DatePart('yyyy','2005-7-25 22:56:32')返回值为 2005即2005年

7.去年的最后一天

Convert函数的详细用处                                                                         

Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))

Sql Server 中一个非常强大的日期格式化函数
Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06
Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06
Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06
Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06
Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16
Select CONVERT(varchar(100), GETDATE(), 12): 060516
Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006
Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
Select CONVERT(varchar(100), GETDATE(), 112): 20060516
Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700
Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827
Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM
Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM
常用:
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
Select CONVERT(varchar(100), GETDATE(), 12): 060516
Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16

8.本月的最后一天

基本的处理和知识                                                                                                   

Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))

1.一个月第一天的
复制 保存Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
2.本周的星期一
复制 保存Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
3.一年的第一天
复制 保存Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
4.季度的第一天
复制 保存Select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
5.当天的半夜
复制 保存Select DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)
6.上个月的最后一天
复制 保存Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
7.去年的最后一天
复制 保存Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
8.本月的最后一天
复制 保存Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))
9.本年的最后一天
复制 保存Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))
10.本月的第一个星期一
复制 保存select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)

9.本年的最后一天

返回当前日期和时间

Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))

通过函数GETDATE(),你可以获得当前的日期和时间。函数GETDATE()可以用来作为DATEDIME型字段的缺省值。这对插入记录时保存当时的时间是有用的。要建立一个表,其中的记录包含有当前的日期和时间,可以添加一个DATETIME型字段,指定其缺省值为函数GETDATE()的返回值,就象这样:
复制 保存Create TABLE site_log (
username VARCHAR(40),
useractivity VARCHAR(100),
entrydate DATETIME DEFAULT GETDATE())
转换日期和时间convert()函数                                                                     

10.本月的第一个星期一

函数GETDATE()的返回值在显示时只显示到秒。实际上,SQL Sever内部时间可以精确到毫秒级(确切地说,可以精确到3.33毫秒)。

select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)

要得到不同格式的日期和时间,你需要使用函数CONVERT() 。例如,当下面的这个语句执行时,显示的时间将包括毫秒:
复制 保存Select CONVERT (VARCHAR(30),GETDATE(),9)
注意例子中数字9的使用。这个数字指明了在显示日期和时间时使用哪种日期和时间格式。当这个语句执行时,将显示如下的日期和时间:
输出窗口 复制 保存
Nov 30 1997 3:29:55:170AM
(1 row(s) affected)
在函数CONVERT()中你可以使用许多种不同风格的日期和时间格式。下表显示了所有的格式。
日期和时间的类型:
复制 保存类型值 标准 输出
0 Default mon dd yyyy hh:miAM
1 USA mm/dd/yy
2 ANSI yy.mm.dd
3 British/French dd/mm/yy
4 German dd.mm.yy
5 Italian dd-mm-yy
6 - dd mon yy
7 - mon dd,yy
8 - hh:mi:ss
9 Default + milliseconds--mon dd yyyy
hh:mi:ss:mmmAM(or )
10 USA mm-dd-yy
11 JAPAN yy/mm/dd
12 ISO yymmdd
13 Europe Default + milliseconds--dd mon yyyy
hh:mi:ss:mmm(24h)
14 - hh:mi:ss:mmm(24h)
类型0,9,和13总是返回四位的年。对其它类型,要显示世纪,把style值加上100。类型13和14返回24小时时钟的时间。类型0,7,和13返回的月份用三位字符表示(用Nov代表November).

返回当前日期和时间

对表中所列的每一种格式,你可以把类型值加上100来显示有世纪的年(例如,00年将显示为2000年)。例如,要按日本标准显示日期,包括世纪,你应使用如下的语句:
复制 保存Select CONVERT(VARCHAR(30), GETDATE(),111)
在这个例子中,函数CONVERT()把日期格式进行转换,显示为1997/11/30

通过函数GETDATE,你可以获得当前的日期和时间。函数GETDATE可以用来作为DATEDIME型字段的缺省值。这对插入记录时保存当时的时间是有用的。要建立一个表,其中的记录包含有当前的日期和时间,可以添加一个DATETIME型字段,指定其缺省值为函数GETDATE的返回值,就象这样:

抽取日期和时间

Create TABLE site_log (

在许多情况下,你也许只想得到日期和时间的一部分,而不是完整的日期和时间。为了抽取日期的特定部分,你可以使用函数DATEPART(),象这样:
复制 保存Select site_name 'Site Name',
DATEPART(mm,site_entrydate) 'Month Posted' FROM site_directory
函数DATEPART()的参数是两个变量。第一个变量指定要抽取日期的哪一部分;第二个变量是实际的数据。在这个例子中,函数DATEPART()抽取月份,因为mm代表月份。下面是这个Select 语句的输出结果:
输出窗口 复制 保存
Site Name Month Posted
………………………………………………………………
Yahoo 2
Microsoft 5
Magicw3 5
(3 row(s) affected)
Month Posted列显示了每个站点被查询的月份。函数DATEPART()的返回值是一个整数。你可以用这个函数抽取日期的各个不同部分,如下表所示。

username VARCHAR(40),

日期的各部分及其简写
复制 保存日期部分 简写 值
year yy 1753--9999
quarter qq 1--4
month mm 1--12
day of year dy 1--366
day dd 1--31
week wk 1--53
weekday dw 1--7(Sunday--Saturday)
hour hh 0--23
minute mi 0--59
second ss 0--59
milisecond ms 0--999
当你需要进行日期和时间的比较时,使用函数DATEPART()返回整数是有用的。但是,上例中的查询结果(2,5)不是十分易读。要以更易读的格式得到部分的日期和时间,你可以使用函数DATENAME(),如下例所示:
复制 保存Select site_name 'Site Name'
DATENAME(mm,site_entrydate) 'Month Posted'
FROM site_directory
函数DATENAME()和函数DATEPART()接收同样的参数。但是,它的返回值是一个字符串,而不是一个整数。下面是上例该用DATENAME()得到的结果:
输出窗口 复制 保存
Site Name Month Postec
………………………………………………………………….
Yahoo February
Microsoft June
Magicw3 June
(3 row(s) affected)
你也可以用函数DATENAE()来抽取一个星期中的某一天。下面的这个例子同时抽取一周中的某一天和日期中的月份:
复制 保存Select site_name 'Site Name',
DATENAME(dw,site_entrydate)+ '-' + DATENAME(mm,site_entrydate)
'Day and Month Posted' FORM site_directory
这个例子执行时,将返回如下的结果:
输出窗口 复制 保存
Site Name Day and Month Posted
………………………………………………………………………
Yahoo Friday - February
Microsoft Tuesday - June
Magicw3 Monday - June
(3 row(s) affected)
返回日期和时间范围

useractivity VARCHAR(100),

当你分析表中的数据时,你也许希望取出某个特定时间的数据。你也许对特定的某一天中――比如说2000年12月25日――访问者在你站点上的活动感兴趣。要取出这种类型的数据,你也许会试图使用这样的Select语句:
复制 保存Select * FROM weblog Where entrydate='12/25/20000'
不要这样做。这个Select语句不会返回正确的记录――它将只返回日期和时间是12/25/2000 12:00:00:000AM的记录。换句话说,只有刚好在午夜零点输入的记录才被返回。

entrydate DATETIME DEFAULT GETDATE())

问题是SQL Sever将用完整的日期和时间代替部分日期和时间。例如,当你输入一个日期,但不输入时间时,SQL Sever将加上缺省的时间“12:00:00:000AM”。当你输入一个时间,但不输入日期时,SQL Sever将加上缺省的日期“Jan 1 1900”。

转换日期和时间

要返回正确的记录,你需要适用日期和时间范围。有不止一种途径可以做到这一点。例如,下面的这个Select 语句将能返回正确的记录:
复制 保存Select * FROM weblog
Where entrydate>='12/25/2000' AND entrydate<'12/26/2000'
这个语句可以完成任务,因为它选取的是表中的日期和时间大于等于12/25/2000 12:00:00:000AM并小于12/26/2000 12:00:00:000AM的记录。换句话说,它将正确地返回2000年圣诞节这一天输入的每一条记录。

函数GETDATE的返回值在显示时只显示到秒。实际上,SQL Sever内部时间可以精确到毫秒级。

另一种方法是,你可以使用LIKE来返回正确的记录。通过在日期表达式中包含通配符“%”,你可以匹配一个特定日期的所有时间。这里有一个例子:
复制 保存Select * FROM weblog Where entrydate LIKE 'Dec 25 2000%'
这个语句可以匹配正确的记录。因为通配符“%”代表了任何时间。

要得到不同格式的日期和时间,你需要使用函数CONVERT。例如,当下面的这个语句执行时,显示的时间将包括毫秒:

使用这两种匹配日期和时间范围的函数,你可以选择某个月,某一天,某一年,某个小时,某一分钟,某一秒,甚至某一毫秒内输入的记录。但是,如果你使用 LIKE 来匹配秒或毫秒,你首先需要使用函数CONVERT()把日期和时间转换为更精确的格式(参见前面“转换日期和时间”一节)。

Select CONVERT(VARCHAR(30),GETDATE(),9)

比较日期和时间

注意例子中数字9的使用。这个数字指明了在显示日期和时间时使用哪种日期和时间格式。当这个语句执行时,将显示如下的日期和时间:

最后,还有两个日期和时间函数对根据日期和时间取出记录是有用的。使用函数DATEADD()和DATEDIFF(),你可以比较日期的早晚。例如,下面的Select语句将显示表中的每一条记录已经输入了多少个小时:
复制 保存Select entrydate 'Time Entered'
DATEDIFF(hh,entrydate,GETDATE()) 'Hours Ago' FROM weblog
如果当前时间是2000年11月30号下午6点15分,则会返回如下的结果:
输出窗口 复制 保存
Time Entered Hours Ago
…………………………………………………..
Dec 30 2000 4:09PM 2
Dec 30 2000 4:13PM 2
Dec 1 2000 4:09PM 698
(3 row(s) affected)
函 数DADEDIFF()的参数是三个变量。第个变量指定日期的某一部分。在这个例子中,是按小时对日期进行比较,(要了解日期各部分的详细内容,请参考表11.2)在日期2000年11月1日和2000年11月30日的指定时间之间有689个小时。另外两个参数是要进行比较的时间。为了返回一个正数,较早的时间应该先给。

Nov 30 1997 3:29:55:170AM

函数DATEADD()把两个日期相加。当你需要计算截止日期这一类的数据时,这个函数是有用处的。假如你要查询一个月前注册用户的记录,你可以使用如下的Select语句:
复制 保存Select username 'User Name',
DATEADD(mm,1,firstvisit_date) 'Registration Expires'
FROM registration_table
函 数DATEADD()的参数有三个变量。第一个变量代表日期的某一部分,这个例子用到了代表月份的mm。第二个变量指定了时间的间隔――在本例中是一个月。最后一个变量是一个日期,在这个例子中,日期是取自DATETIME型字段 firstvisit_date.假设当前日期是June 30,2000,这个语句将返回如下的内容:
输出窗口 复制 保存
User Name Registration Expires
……………………………………………………………………………
Bill Gates Jul 30 2000 4:09PM
President Clinton Jul 30 2000 4:13PM
William Shakespeare Jul 1 2000 4:09PM
(3 row(s) affected)
注意:
使用函数DATEADD()把一个日期加上一个月,它并不加上30天。这个函数只简单地把月份值加1。

(1 row(s) affected)

SQL Server里面可能经常会用到的日期格式转换方法:
举例如下:
复制 保存select CONVERT(varchar, getdate(), 120 )
--2004-09-12 11:06:08

在函数CONVERT中你可以使用许多种不同风格的日期和时间格式。下表显示了所有的格式。

select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')
--20040912110608

日期和时间的类型:

select CONVERT(varchar(12) , getdate(), 111 )
--2004/09/12

类型值 标准 输出

select CONVERT(varchar(12) , getdate(), 112 )
--20040912

0 Default mon dd yyyy hh:miAM

select CONVERT(varchar(12) , getdate(), 102 )
--2004.09.12

1 USA mm/dd/yy

select CONVERT(varchar(12) , getdate(), 101 )
--09/12/2004

2 ANSI yy.mm.dd

select CONVERT(varchar(12) , getdate(), 103 )
--12/09/2004

3 British/French dd/mm/yy

select CONVERT(varchar(12) , getdate(), 104 )
--12.09.2004

4 German dd.mm.yy

select CONVERT(varchar(12) , getdate(), 105 )
--12-09-2004

5 Italian dd-mm-yy

select CONVERT(varchar(12) , getdate(), 106 )
--12 09 2004

6 - dd mon yy

select CONVERT(varchar(12) , getdate(), 107 )
--09 12, 2004

7 - mon dd,yy

select CONVERT(varchar(12) , getdate(), 108 )
--11:06:08

8 - hh:mi:ss

葡京正网网投,select CONVERT(varchar(12) , getdate(), 109 )
--09 12 2004 1

9 Default + milliseconds--mon dd yyyy

select CONVERT(varchar(12) , getdate(), 110 )
--09-12-2004

hh:mi:ss:mmmAM(or )

select CONVERT(varchar(12) , getdate(), 113 )
--12 09 2004 1

10 USA mm-dd-yy

select CONVERT(varchar(12) , getdate(), 114 )
--11:06:08.177

11 JAPAN yy/mm/dd

12 ISO yymmdd

13 Europe Default + milliseconds--dd mon yyyy

hh:mi:ss:mmm(24h)

14 - hh:mi:ss:mmm(24h)

葡京网投哪个正规,类型0,9,和13总是返回四位的年。对其它类型,要显示世纪,把style值加上100。类型13和14返回24小时时钟的时间。类型0,7,和13返回的月份用三位字符表示.

对表中所列的每一种格式,你可以把类型值加上100来显示有世纪的年。例如,要按日本标准显示日期,包括世纪,你应使用如下的语句:

Select CONVERT,GETDATE,111)

在这个例子中,函数CONVERT把日期格式进行转换,显示为1997/11/30

抽取日期和时间

在许多情况下,你也许只想得到日期和时间的一部分,而不是完整的日期和时间。为了抽取日期的特定部分,你可以使用函数DATEPART,象这样:

Select site_name ‘Site Name’,

DATEPART(mm,site_entrydate) ‘Month Posted’ FROM site_directory

函数DATEPART的参数是两个变量。第一个变量指定要抽取日期的哪一部分;第二个变量是实际的数据。在这个例子中,函数DATEPART抽取月份,因为mm代表月份。下面是这个Select 语句的输出结果:

Site Name Month Posted

………………………………………………………………

Yahoo 2

Microsoft 5

Magicw3 5

(3 row(s) affected)

Month Posted列显示了每个站点被查询的月份。函数DATEPART的返回值是一个整数。你可以用这个函数抽取日期的各个不同部分,如下表所示。

日期的各部分及其简写

日期部分 简写 值

year yy 1753--9999

quarter qq 1--4

month mm 1--12

day of year dy 1--366

day dd 1--31

week wk 1--53

weekday dw 1--7(Sunday--Saturday)

hour hh 0--23

minute mi 0--59

second ss 0--59

milisecond ms 0--999

当你需要进行日期和时间的比较时,使用函数DATEPART返回整数是有用的。但是,上例中的查询结果不是十分易读。要以更易读的格式得到部分的日期和时间,你可以使用函数DATENAME,如下例所示:

Select site_name ‘Site Name’

DATENAME(mm,site_entrydate) ‘Month Posted’

FROM site_directory

函数DATENAME和函数DATEPART接收同样的参数。但是,它的返回值是一个字符串,而不是一个整数。下面是上例该用DATENAME得到的结果:

Site Name Month Postec

………………………………………………………………….

Yahoo February

Microsoft June

Magicw3 June

(3 row(s) affected)

你也可以用函数DATENAE来抽取一个星期中的某一天。下面的这个例子同时抽取一周中的某一天和日期中的月份:

Select site_name ‘Site Name’,

DATENAME(dw,site_entrydate)+ ‘-’ + DATENAME

‘Day and Month Posted’ FORM site_directory

这个例子执行时,将返回如下的结果:

Site Name Day and Month Posted

………………………………………………………………………

Yahoo Friday - February

Microsoft Tuesday - June

Magicw3 Monday - June

(3 row(s) affected)

返回日期和时间范围

当你分析表中的数据时,你也许希望取出某个特定时间的数据。你也许对特定的某一天中��比如说2000年12月25日��访问者在你站点上的活动感兴趣。要取出这种类型的数据,你也许会试图使用这样的Select语句:

Select * FROM weblog Where entrydate=“12/25/2000”

不要这样做。这个Select语句不会返回正确的记录��它将只返回日期和时间是12/25/2000 12:00:00:000AM的记录。换句话说,只有刚好在午夜零点输入的记录才被返回。

问题是SQL Sever将用完整的日期和时间代替部分日期和时间。例如,当你输入一个日期,但不输入时间时,SQL Sever将加上缺省的时间“12:00:00:000AM”。当你输入一个时间,但不输入日期时,SQL Sever将加上缺省的日期“Jan 1 1900”。

要返回正确的记录,你需要适用日期和时间范围。有不止一种途径可以做到这一点。例如,下面的这个Select 语句将能返回正确的记录:

Select * FROM weblog

Where entrydate=”12/25/2000” AND entrydate”12/26/2000”

这个语句可以完成任务,因为它选取的是表中的日期和时间大于等于12/25/2000 12:00:00:000AM并小于12/26/2000 12:00:00:000AM的记录。换句话说,它将正确地返回2000年圣诞节这一天输入的每一条记录。

另一种方法是,你可以使用LIKE来返回正确的记录。通过在日期表达式中包含通配符“%”,你可以匹配一个特定日期的所有时间。这里有一个例子:

Select * FROM weblog Where entrydate LIKE ‘Dec 25 2000%’

这个语句可以匹配正确的记录。因为通配符“%”代表了任何时间。

使用这两种匹配日期和时间范围的函数,你可以选择某个月,某一天,某一年,某个小时,某一分钟,某一秒,甚至某一毫秒内输入的记录。但是,如果你使用 LIKE 来匹配秒或毫秒,你首先需要使用函数CONVERT把日期和时间转换为更精确的格式。

比较日期和时间

最后,还有两个日期和时间函数对根据日期和时间取出记录是有用的。使用函数DATEADD和DATEDIFF,你可以比较日期的早晚。例如,下面的Select语句将显示表中的每一条记录已经输入了多少个小时:

Select entrydate ‘Time Entered’

DATEDIFF(hh,entrydate,GETDATE()) ‘Hours Ago’ FROM weblog

如果当前时间是2000年11月30号下午6点15分,则会返回如下的结果:

Time Entered Hours Ago

…………………………………………………

Dec 30 2000 4:09PM 2

Dec 30 2000 4:13PM 2

Dec 1 2000 4:09PM 698

(3 row(s) affected)

函数DADEDIFF的参数是三个变量。第个变量指定日期的某一部分。在这个例子中,是按小时对日期进行比较,在日期2000年11月1日和2000年11月30日的指定时间之间有689个小时。另外两个参数是要进行比较的时间。为了返回一个正数,较早的时间应该先给。

函数DATEADD把两个日期相加。当你需要计算截止日期这一类的数据时,这个函数是有用处的。假如你要查询一个月前注册用户的记录,你可以使用如下的Select语句:

Select username ‘User Name’,

DATEADD(mm,1,firstvisit_date) ‘Registration Expires’

FROM registration_table

函数DATEADD的参数有三个变量。第一个变量代表日期的某一部分,这个例子用到了代表月份的mm。第二个变量指定了时间的间隔��在本例中是一个月。最后一个变量是一个日期,在这个例子中,日期是取自DATETIME型字段firstvisit_date.假设当前日期是June 30,2000,这个语句将返回如下的内容:

User Name Registration Expires

……………………………………………………………………………

Bill Gates Jul 30 2000 4:09PM

President Clinton Jul 30 2000 4:13PM

William Shakespeare Jul 1 2000 4:09PM

(3 row(s) affected)

注意:

使用函数DATEADD把一个日期加上一个月,它并不加上30天。这个函数只简单地把月份值加1。

本文由葡京网投哪个正规发布于联系我们,转载请注明出处:【葡京网投哪个正规】时间日期加减处理函数,SQL对时间处理的语句小结

关键词:

上一篇:没有了

下一篇:三十种SQL语句优化方法