sql中常用的日期转换方式1-CONVERT() 函数

分类: SQL数据库 |
sql中常用的日期转换方式1-CONVERT() 函数
定义和用法
CONVERT()
函数是把日期转换为新数据类型的通用函数。
CONVERT()
函数可以用不同的格式显示日期/时间数据。
语法
CONVERT(data_type(length),data_to_be_converted,style)
data_type(length)
可以使用的
Style ID | Style 格式 |
---|---|
100 或者 0 |
mon dd yyyy hh:miAM (或者 PM) |
101 | mm/dd/yy |
102 | yy.mm.dd |
103 | dd/mm/yy |
104 | dd.mm.yy |
105 | dd-mm-yy |
106 | dd mon yy |
107 | Mon dd, yy |
108 | hh:mm:ss |
109 或者 9 |
mon dd yyyy hh:mi:ss:mmmAM(或者 PM) |
110 | mm-dd-yy |
111 | yy/mm/dd |
112 | yymmdd |
113 或者 13 |
dd mon yyyy hh:mm:ss:mmm(24h) |
114 | hh:mi:ss:mmm(24h) |
120 或者 20 | yyyy-mm-dd hh:mi:ss(24h) |
121 或者 21 | yyyy-mm-dd hh:mi:ss.mmm(24h) |
126 | yyyy-mm-ddThh:mm:ss.mmm(没有空格) |
130 |
dd mon yyyy hh:mi:ss:mmmAM |
131 |
dd/mm/yy hh:mi:ss:mmmAM |
实例
下面的脚本使用 CONVERT()
函数来显示不同的格式。我们将使用 GETDATE() 函数来获得当前的日期/时间:
CONVERT(VARCHAR(19),GETDATE())
CONVERT(VARCHAR(10),GETDATE(),110)
CONVERT(VARCHAR(11),GETDATE(),106)
CONVERT(VARCHAR(24),GETDATE(),113)
结果类似:
Dec
29 2008 11:45 PM
12-29-200829 Dec 0829
Dec 2008 16:25:46.635
CONVERT()函数
对于简单类型转换,CONVERT()函数和CAST()函数的功能相同,只是语法不同。CAST()函数一般更容易使用,其功能也更简单。CONVERT()函数的优点是可以格式化日期和数值,它需要两个参数:第1个是目标数据类型,第2个是源数据。以下的两个例子和上一节的例子类似:
-
SELECT
CONVERT(int, '123') -
SELECT
CONVERT(decimal(9,2), '123.4')
CONVERT()函数还具有一些改进的功能,它可以返回经过格式化的字符串值,且可以把日期值格式化成很多形式。有28种预定义的符合各种国际和特殊要求的日期与时间输出格式。表6-8列出了这些日期格式。
表
6-8
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(续表)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这个函数的第三个参数是可选的,该参数用于接收格式代码整型值。表中的例子用于对DateTime数据类型进行转换。在转换SmallDateTime数据类型时,格式不变,但一些元素会显示为0,因为该数据类型不支持毫秒。以下的脚本例子将输出格式化的日期:
-
SELECT
'Default
Date:' CONVERT(Varchar(50), GETDATE(), 100) -
Default
Date:
Apr
25 2005 1:05PM -
SELECT 'US
Date:'
CONVERT(Varchar(50), GETDATE(),101) -
US
Date: 04/25/2005 -
SELECT
'ANSI
Date:' CONVERT(Varchar(50), GETDATE(), 103) -
ANSI
Date: 2005.04.25 -
SELECT
'UK/French
Date:' CONVERT (Varchar(50), GETDATE(), 103) -
UK/French
Date:
25/04/2OO5 -
SELECT
'German
Date:' CONVERT(Varchaz(50), GETDATE(), 104) -
German
Date:
25.04.2005
格式代码0,1和2也可用于数字类型,它们对小数与千位分隔符格式产生影响。而不同的数据类型所受的影响是不一样的。一般来说,使用格式代码0(或者不指定这个参数的值),将返回该数据类型最惯用的格式。使用1或者2通常显示更为详细或者更精确的值。以下例子使用格式代码0:
-
DECLARE
@Num
Money -
SET
@Num = 1234.56 -
SELECT
CONVERT(varchar(50), @Num, 0)
返回结果如下:
- 1234.56
使用值1则返回如下结果:
- 1,234.56
使用值2则返回如下结果:
- 1234.5600
以下例子和上例相同,但是使用Float类型:
-
DECLARE
@Num
float -
SET
@Num = 1234.56 -
SELECT
CONVERT(varchar(50), @Num, 2)
使用值0不会改变所提供的格式,但是使用值1或2将返回以科学计数法表示的数字,后者使用了15位小数:
-
1.23456000000000e
003
**********************************************************************************************
1. 当前系统日期、时间
select getdate()
2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值
例如:向日期加上2天
select dateadd(day,2,'2004-10-15') --返回:2004-10-17
00:00:00.000
3. datediff 返回跨两个指定日期的日期和时间边界数。
select
datediff(day,'2004-09-01','2004-09-18')
--返回:17
4. datepart 返回代表指定日期的指定日期部分的整数。
SELECT DATEPART(month, '2004-10-15')
--返回
10
5. datename 返回代表指定日期的指定日期部分的字符串
SELECT datename(weekday,
'2004-10-15')
--返回:星期五
6. day(), month(),year() --可以与datepart对照一下
select 当前日期=convert(varchar(10),getdate(),120)
,当前时间=convert(varchar(8),getdate(),114)
select
本年第多少周=datename(week,'2004-10-15')
,今天是周几=datename(weekday,'2004-10-15')
函数 参数/功能
GetDate( )
返回系统目前的日期与时间
以interval指定的方式,加上number之后的日期
秒
天
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年
这是计算一个月第一天的SQL 脚本:
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
这里我是用周(wk)的时间间隔来计算哪一天是本周的星期一。
SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
现在用年(yy)的时间间隔来显示这一年的第一天。
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
假如你要计算这个季度的第一天,这个例子告诉你该如何做。
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
---------------------------------------