加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2016-08-26 21:48:04)
分类: SQL数据库
网址:http://blog.sina.com.cn/s/blog_15b9821340102wl0g.html

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

定义和用法

个人习惯这种格式:     
CONVERT(varchar(100), GETDATE(),23
2009-07-15


CONVERT()

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

CONVERT()

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

语法


CONVERT(
data_type(length),data_to_be_converted,style)

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

可以使用的 style 值:

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个是源数据。以下的两个例子和上一节的例子类似:

  1. SELECT

    CONVERT(int, '123')
  2. SELECT

    CONVERT(decimal(9,2), '123.4')

CONVERT()函数还具有一些改进的功能,它可以返回经过格式化的字符串值,且可以把日期值格式化成很多形式。有28种预定义的符合各种国际和特殊要求的日期与时间输出格式。表6-8列出了这些日期格式。



6-8




格式序号




年份位数




小时格式




 




 




0




2




12




默认




Apr 25 2005 1:05
PM




1




2

 




美国




04/24/05




2




2

 




ANSI




05.04.25




3




2

 




英国/法国




25/04/05




4




2

 




德国




25.04.05




5




2

 




意大利




25-04-05




6




2

 




定制-仅日期




25 Apr 05




7




2

 




定制-仅日期




Apr 25,05




8

 




24




定制-仅时间




13:05:35




9




4




12




默认,毫秒




Apr 25 2005 1:05:35:123
PM




10




2

 




美国




04-25-05




11




2

 




日本




05/04/25




12




2

 




ISO




050425

(续表)




格式 序号




年份 位数




小时格式




 




 




13




4




24




欧洲




25 Apr 2005




13:05:35:123




14

 




24




定制时间,毫秒




13:05:35:123




100




4




12




默认




Apr 25




20051:05
PM




101




4

 




美国




04/24/05




102




4

 




ANSI




2005.04.25




103




4

 




英国/法国




25/04/2005




104




4

 




德国




25.04.2005




105




4

 




意大利




25-04-05




106




4

 




定制-仅日期




25Apr2005




107




4

 




定制-仅日期




Apr25,2005




108

 




24




定制-仅时间




13:05:35




109




4




12




默认,毫秒




Apr 252005




1:05:35:123
PM




110




4

 




美国




04-25-2005




111




4

 




日本




2005/04/25




112




4

 




ISO




20050425




113




4




24




欧洲




25 Apr 2005




13:05:35:123




114

 




24




定制时间,毫秒




13:05:35:123

这个函数的第三个参数是可选的,该参数用于接收格式代码整型值。表中的例子用于对DateTime数据类型进行转换。在转换SmallDateTime数据类型时,格式不变,但一些元素会显示为0,因为该数据类型不支持毫秒。以下的脚本例子将输出格式化的日期:

  1. SELECT
    'Default

    Date:' CONVERT(Varchar(50), GETDATE(), 100)
  2. Default Date:
    Apr

    25 2005 1:05PM
  3. SELECT 'US
    Date:'

    CONVERT(Varchar(50), GETDATE(),101)
  4. US

    Date: 04/25/2005
  5. SELECT
    'ANSI

    Date:' CONVERT(Varchar(50), GETDATE(), 103)
  6. ANSI

    Date: 2005.04.25
  7. SELECT
    'UK/French

    Date:' CONVERT (Varchar(50), GETDATE(), 103)
  8. UK/French
    Date:

    25/04/2OO5
  9. SELECT
    'German

    Date:' CONVERT(Varchaz(50), GETDATE(), 104)
  10. German
    Date:

    25.04.2005

格式代码0,1和2也可用于数字类型,它们对小数与千位分隔符格式产生影响。而不同的数据类型所受的影响是不一样的。一般来说,使用格式代码0(或者不指定这个参数的值),将返回该数据类型最惯用的格式。使用1或者2通常显示更为详细或者更精确的值。以下例子使用格式代码0:

  1. DECLARE
    @Num

    Money
  2. SET

    @Num = 1234.56
  3. SELECT

    CONVERT(varchar(50), @Num, 0)

返回结果如下:

  1. 1234.56

使用值1则返回如下结果:

  1. 1,234.56

使用值2则返回如下结果:

  1. 1234.5600

以下例子和上例相同,但是使用Float类型:

  1. DECLARE
    @Num

    float
  2. SET

    @Num = 1234.56
  3. SELECT

    CONVERT(varchar(50), @Num, 2)

使用值0不会改变所提供的格式,但是使用值1或2将返回以科学计数法表示的数字,后者使用了15位小数:

  1. 1.23456000000000e
    003

**********************************************************************************************

在SQL(结构化语言)是一个函数  CONVERT

在SQL(结构化语言)中的一个系统函数

  1.

一般用法:

  convert
函数

用来转换数据类型

  例子:SELECT

CONVERT (VARCHAR(5),12345)

  返回:字符串

'12345'

  2.

其他用法 :与 datetime、smalldatetime 或

sql_variant三种数据类型一起使用时,

 




语句 结果



SELECT CONVERT(varchar(100), GETDATE(), 0) 07 15 2009

4:06PM



SELECT CONVERT(varchar(100), GETDATE(), 1) 07/15/09



SELECT CONVERT(varchar(100), GETDATE(), 2) 09.07.15



SELECT CONVERT(varchar(100), GETDATE(), 3) 15/07/09



SELECT CONVERT(varchar(100), GETDATE(), 4) 15.07.09



SELECT CONVERT(varchar(100), GETDATE(), 5) 15-07-09



SELECT CONVERT(varchar(100), GETDATE(), 6) 15 07 09



SELECT CONVERT(varchar(100), GETDATE(), 7) 07 15, 09



SELECT CONVERT(varchar(100), GETDATE(), 8) 16:06:26



SELECT CONVERT(varchar(100), GETDATE(), 9) 07 15 2009

4:06:26:513PM



SELECT CONVERT(varchar(100), GETDATE(), 10) 07-15-09



SELECT CONVERT(varchar(100), GETDATE(), 11) 09/07/15



SELECT CONVERT(varchar(100), GETDATE(), 12) 090715



SELECT CONVERT(varchar(100), GETDATE(), 13) 15 07 2009

16:06:26:513



SELECT CONVERT(varchar(100), GETDATE(), 14)

16:06:26:513



SELECT CONVERT(varchar(100), GETDATE(), 20) 2009-07-15

16:06:26
CONVERT(varchar(100),GETDATE(),21) 
2009-07-15 16:06:26.513



SELECT CONVERT(varchar(100), GETDATE(), 22) 07/15/09 4:06:26

PM
个人习惯这种格式:     
CONVERT(varchar(100), GETDATE(),23
2009-07-15
CONVERT(varchar(100),GETDATE(),24) 
16:06:26

CONVERT(varchar(100),GETDATE(),25) 
2009-07-15 16:06:26.513



SELECT CONVERT(varchar(100), GETDATE(), 100) 07 15 2009

4:06PM



SELECT CONVERT(varchar(100), GETDATE(), 101)

07/15/2009



SELECT CONVERT(varchar(100), GETDATE(), 102)

2009.07.15



SELECT CONVERT(varchar(100), GETDATE(), 103)

15/07/2009



SELECT CONVERT(varchar(100), GETDATE(), 104)

15.07.2009



SELECT CONVERT(varchar(100), GETDATE(), 105)

15-07-2009



SELECT CONVERT(varchar(100), GETDATE(), 106) 15 07

2009



SELECT CONVERT(varchar(100), GETDATE(), 107) 07 15,

2009



SELECT CONVERT(varchar(100), GETDATE(), 108) 16:06:26



SELECT CONVERT(varchar(100), GETDATE(), 109) 07 15 2009

4:06:26:513PM



SELECT CONVERT(varchar(100), GETDATE(), 110)

07-15-2009



SELECT CONVERT(varchar(100), GETDATE(), 111)

2009/07/15



SELECT CONVERT(varchar(100), GETDATE(), 112) 20090715



SELECT CONVERT(varchar(100), GETDATE(), 113) 15 07 2009

16:06:26:513



SELECT CONVERT(varchar(100), GETDATE(), 114)

16:06:26:513



SELECT CONVERT(varchar(100), GETDATE(), 120) 2009-07-15

16:06:26



SELECT CONVERT(varchar(100), GETDATE(), 121) 2009-07-15

16:06:26.513



SELECT CONVERT(varchar(100), GETDATE(), 126)

2009-07-15T16:06:26.513



SELECT CONVERT(varchar(100), GETDATE(), 130) 23 ??? 1430

4:06:26:513PM



SELECT CONVERT(varchar(100), GETDATE(), 131) 23/07/1430

4:06:26:513PM



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( )

返回系统目前的日期与时间
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指定部分所对应的字符串名称
举例:
1.GetDate() 用于sql server :select 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




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)



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



用友数据分析

欢迎访问:http://www.df-bi.com




更多数据分析模型,欢迎扫描"微信公众号"

或者查找微信公众号:"DF数据工厂"  

 "data_f"




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

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有