www.bifa9999com 6

sql date()函数

字符串函数:

SQL Server Date 函数

下面的表格列出了 SQL Server 中最重要的内建日期函数:

函数 描述
GETDATE() 返回当前的日期和时间
DATEPART() 返回日期/时间的单独部分
DATEADD() 在日期中添加或减去指定的时间间隔
DATEDIFF() 返回两个日期之间的时间
CONVERT() 用不同的格式显示日期/时间

 

(1)、GETDATE() 函数从 SQL Server 返回当前的日期和时间。

 www.bifa9999com 1

语法

GETDATE()


www.bifa9999com 2

实例

下面是 SELECT 语句:

SELECT GETDATE() AS CurrentDateTime

结果如下所示:

CurrentDateTime
2008-11-11 12:45:34.243

(2)、

DATEPART()
函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

www.bifa9999com 3

语法

DATEPART(datepart,date)

date 参数是合法的日期表达式。datepart 参数可以是下列的值:

datepart 缩写
yy, yyyy
季度 qq, q
mm, m
年中的日 dy, y
dd, d
wk, ww
星期 dw, w
小时 hh
分钟 mi, n
ss, s
毫秒 ms
微妙 mcs
纳秒 ns

 

实例

假设我们有如下的 “Orders” 表:

OrderId ProductName OrderDate
1 Jarlsberg Cheese 2008-11-11 13:23:44.657

下面是 SELECT 语句:

SELECT DATEPART(yyyy,OrderDate) AS OrderYear, DATEPART(mm,OrderDate) AS
OrderMonth, DATEPART(dd,OrderDate) AS OrderDay, FROM Orders WHERE
OrderId=1

结果如下所示:

OrderYear OrderMonth OrderDay
2008 11 11

(3)、

DATEADD() 函数在日期中添加或减去指定的时间间隔。

时间日期函数:

语法

DATEADD(datepart,number,date)

date 参数是合法的日期表达式。number
是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。

datepart 参数可以是下列的值:

datepart 缩写
yy, yyyy
季度 qq, q
mm, m
年中的日 dy, y
dd, d
wk, ww
星期 dw, w
小时 hh
分钟 mi, n
ss, s
毫秒 ms
微妙 mcs
纳秒 ns

 

实例

假设我们有如下的 “Orders” 表:

OrderId ProductName OrderDate
1 Jarlsberg Cheese 2008-11-11 13:23:44.657

现在,我们想要向 “OrderDate” 添加 45 天,这样就可以找到付款日期。

www.bifa9999com,我们使用下面的 SELECT 语句:

SELECT OrderId,DATEADD(day,45,OrderDate) AS OrderPayDate FROM Orders

结果:

OrderId OrderPayDate
1 2008-12-26 13:23:44.657

(4)、

DATEDIFF() 函数返回两个日期之间的天数。

SELECT @@DATEFIRST AS ‘1st Day’, DATEPART(dw, GETDATE()) AS ‘Today’

语法

DATEDIFF(datepart,startdate,enddate)

startdate 和 enddate 参数是合法的日期表达式。datepart
参数可以是下列的值:

datepart 缩写
yy, yyyy
季度 qq, q
mm, m
年中的日 dy, y
dd, d
wk, ww
星期 dw, w
小时 hh
分钟 mi, n
ss, s
毫秒 ms
微妙 mcs
纳秒 ns

SELECT GETDATE()

实例

现在我们想要获取两个日期之间的天数。

我们使用下面的 SELECT 语句:

SELECT DATEDIFF(day,’2008-06-05′,’2008-08-05′) AS DiffDate

结果:

DiffDate
61

 www.bifa9999com 4

实例

现在我们想要获取两个日期之间的天数(请注意,第二个日期比第一个日期早,结果将是一个负数)。

我们使用下面的 SELECT 语句:

SELECT DATEDIFF(day,’2008-08-05′,’2008-06-05′) AS DiffDate

结果:

DiffDate
-61

(5)、

CONVERT() 函数是把日期转换为新数据类型的通用函数。

CONVERT() 函数可以用不同的格式显示日期/时间数据。

 

语法

CONVERT(data_type(length),expression,style)

描述
data_type(length) 规定目标数据类型(带有可选的长度)。
expression 规定需要转换的值。
style 规定日期/时间的输出格式。

下面的表格展示了 datetime 或 smalldatetime 转换为字符数据的 style 值:

值 (世纪 yy) 值 (世纪 yyyy) 输入/输出 标准
0 or 100 mon dd yyyy hh:miAM (or PM) Default
1 101 mm/dd/yy USA
2 102 yy.mm.dd ANSI
3 103 dd/mm/yy British/French
4 104 dd.mm.yy German
5 105 dd-mm-yy Italian
6 106 dd mon yy  
7 107 Mon dd, yy  
8 108 hh:mm:ss  
9 or 109 mon dd yyyy hh:mi:ss:mmmAM (or PM) Default+millisec
10 110 mm-dd-yy USA
11 111 yy/mm/dd Japan
12 112 yymmdd ISO
13 or 113 dd mon yyyy hh:mi:ss:mmm (24h)  
14 114 hh:mi:ss:mmm (24h)  
20 or 120 yyyy-mm-dd hh:mi:ss (24h)  
21 or 121 yyyy-mm-dd hh:mi:ss.mmm (24h)  
126 yyyy-mm-ddThh:mi:ss.mmm (no spaces) ISO8601
130 dd mon yyyy hh:mi:ss:mmmAM Hijiri
131 dd/mm/yy hh:mi:ss:mmmAM Hijiri

数据转换、函数转换:

实例

下面的脚本使用 CONVERT() 函数来显示不同的格式。我们将使用 GETDATE()
函数来获得当前的日期/时间:

CONVERT(VARCHAR(19),GETDATE()) CONVERT(VARCHAR(10),GETDATE(),10)
CONVERT(VARCHAR(10),GETDATE(),110) CONVERT(VARCHAR(11),GETDATE(),6)
CONVERT(VARCHAR(11),GETDATE(),106) CONVERT(VARCHAR(24),GETDATE(),113)

结果如下所示:

Nov 04 2011 11:45 PM 11-04-11 11-04-2011 04 Nov 11 04 Nov 2011 04 Nov
2011 11:45:34:243

 

 www.bifa9999com 5

 

练习:查看名字,生日

 www.bifa9999com 6