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

复制代码 代码如下: –获取当前时间 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())

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

milisecond ms 0–999

具体的网址倒是没保存,可是我这个人习惯把好的代码记起方法保存下来,现在贴出来,希望原作者体谅。
复制代码 代码如下: —上个月月初第一天
select CONVERT(varchar(12) ,
DATEADD(mm,DATEDIFF(mm,0,dateadd(mm,-1,getdate())),0), 112 )
—上个月月末最后一天 select
CONVERT(varchar(12),dateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate()),0)),
112 ) –1. 显示本月第一天 SELECT DATEADD(mm,DATEDIFF(mm,0,getdate()),0)
select convert(datetime,convert(varchar(8),getdate(),120)+’01’,120) –2.
显示本月最后一天 select
dateadd(day,-1,convert(datetime,convert(varchar(8),dateadd(month,1,getdate()),120)+’01’,120))
SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+1,0)) –3.
上个月的最后一天 SELECT
dateadd(ms,-3,DATEADD(mm,DATEDIFF(mm,0,getdate()),0)) –4.
本月的第一个星期一 select DATEADD(wk,DATEDIFF(wk,0,
dateadd(dd,6-datepart(day,getdate()),getdate())),0) –5. 本年的第一天
SELECT DATEADD(yy,DATEDIFF(yy,0,getdate()),0) –6. 本年的最后一天 SELECT
dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate())+1,0)) –7.
去年的最后一天 SELECT
dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate()),0)) –8.
本季度的第一天 SELECT DATEADD(qq,DATEDIFF(qq,0,getdate()),0) –9.
本周的星期一 SELECT DATEADD(wk,DATEDIFF(wk,0,getdate()),0) –10.
查询本月的记录 select * from tableName where DATEPART(mm,
theDate)=DATEPART(mm, GETDATE()) and DATEPART(yy, theDate) =
DATEPART(yy, GETDATE()) –11. 查询本周的记录 select * from tableName
where DATEPART(wk, theDate) = DATEPART(wk, GETDATE()) and DATEPART(yy,
theDate) = DATEPART(yy, GETDATE()) –12 查询本季的记录
注:其中:GETDATE() 是获得系统时间的函数。 select * from tableName where
DATEPART(qq, theDate) = DATEPART(qq, GETDATE()) and DATEPART(yy,
theDate) = DATEPART(yy, GETDATE()) –13. 获取当月总天数: select
DATEDIFF(dd,getdate(),DATEADD(mm, 1, getdate())) select
datediff(day,dateadd(mm, datediff(mm,”,getdate()), ”),dateadd(mm,
datediff(mm,”,getdate()), ‘1900-02-01′)) –14. 获取当前为星期几 SELECT
DATENAME(weekday, getdate()) select CONVERT(varchar(12) , getdate(), 101
) –12/28/2007 select CONVERT(varchar(12) , getdate(), 102 )
–2007.12.28 select CONVERT(varchar(12) , getdate(), 103 ) –28/12/2007
select CONVERT(varchar(12) , getdate(), 104 ) –28.12.2007 select
CONVERT(varchar(12) , getdate(), 105 ) –28-12-2007 select
CONVERT(varchar(12) , getdate(), 106 ) –28 12 2007 select
CONVERT(varchar(12) , getdate(), 107 ) –12 28, 2007 select
CONVERT(varchar(12) , getdate(), 108 ) –10:06:33 select
CONVERT(varchar(12) , getdate(), 109 ) –12 28 2007 1 select
CONVERT(varchar(12) , getdate(), 110 ) –12-28-2007 select
CONVERT(varchar(12) , getdate(), 111 ) –2007/12/28 select
CONVERT(varchar(12) , getdate(), 112 ) –20071228 select
CONVERT(varchar(12) , getdate(), 113 ) –28 12 2007 1 select
CONVERT(varchar(12) , getdate(), 114 ) –10:07:36:623 select
CONVERT(varchar, getdate(), 120 ) –2007-12-28 10:08:56 select
CONVERT(varchar(10), getdate(), 120 ) –2007-12-28 select
replace(replace(replace(CONVERT(varchar, getdate(), 120 ),’-‘,”),’
‘,”),’:’,”) –20071228101012

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

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

11 JAPAN yy/mm/dd

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

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

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

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

返回当前日期和时间

Dec 30 2000 4:09PM 2

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

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

day dd 1–31

代码如下复制代码

要返回正确的记录,你需要适用日期和时间范围。有不止一种途径可以做到这一点。例如,下面的这个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年圣诞节这一天输入的每一条记录。

0 Default mon dd yyyy hh:miAM

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

–当前字段值、加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;

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

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

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

Select site_name ‘Site Name’

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

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

‘Day and Month Posted’ FORM site_directory

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

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

8 – hh:mi:ss

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

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

Yahoo Friday – February

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

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 天

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

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

缩 写(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

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

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

在许多情况下,你也许只想得到日期和时间的一部分,而不是完整的日期和时间。为了抽取日期的特定部分,你可以使用函数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()的返回值是一个整数。你可以用这个函数抽取日期的各个不同部分,如下表所示。

DATENAME(mm,site_entrydate) ‘Month Posted’

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

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

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

Sql Server中的日期与时间函数

quarter qq 1–4

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

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

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

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

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

Bill Gates Jul 30 2000 4:09PM

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

Yahoo 2

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

6 – dd mon yy

比较日期和时间

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

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

(3 row(s) affected)

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年

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

  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对照一下

Magicw3 June

select CONVERT(varchar(12) , getdate(), 109 )
–09 12 2004 1

Select * FROM weblog

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

year yy 1753–9999

日期的各部分及其简写
复制 保存日期部分 简写 值
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)
返回日期和时间范围

entrydate DATETIME DEFAULT GETDATE())

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

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

相关文章