http://www.w3school.com.cn/sql/index.asp

SQL Server CONVERT() 函数

定义和用法

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-2008
29 Dec 08
29 Dec 2008 16:25:46.635

SQL Server Date 函数

1、日期格式化处理

DECLARE @dt datetime
SET @dt=GETDATE()

–1.短日期格式:yyyy-m-d
SELECT REPLACE(CONVERT(varchar(10),@dt,120),N\’-0\’,\’-\’)

–2.长日期格式:yyyy年mm月dd日
–A. 方法1
SELECT STUFF(STUFF(CONVERT(char(8),@dt,112),5,0,N\’年\’),8,0,N\’月\’)+N\’日\’
–B. 方法2
SELECT DATENAME(Year,@dt)+N\’年\’+DATENAME(Month,@dt)+N\’月\’+DATENAME(Day,@dt)+N\’日\’

–3.长日期格式:yyyy年m月d日
SELECT DATENAME(Year,@dt)+N\’年\’+CAST(DATEPART(Month,@dt) AS varchar)+N\’月\’+DATENAME(Day,@dt)+N\’日\’

–4.完整日期+时间格式:yyyy-mm-dd hh:mi:ss:mmm
SELECT CONVERT(char(11),@dt,120)+CONVERT(char(12),@dt,114)

2、日期推算处理

DECLARE @dt datetime
SET @dt=GETDATE()

DECLARE @number int
SET @number=3

–1.指定日期该年的第一天或最后一天
–A. 年的第一天
SELECT CONVERT(char(5),@dt,120)+\’1-1\’

–B. 年的最后一天
SELECT CONVERT(char(5),@dt,120)+\’12-31\’

–2.指定日期所在季度的第一天或最后一天
–A. 季度的第一天
SELECT CONVERT(datetime,
CONVERT(char(8),
DATEADD(Month,
DATEPART(Quarter,@dt)*3-Month(@dt)-2,
@dt),
120)+\’1\’)

–B. 季度的最后一天(CASE判断法)
SELECT CONVERT(datetime,
CONVERT(char(8),
DATEADD(Month,
DATEPART(Quarter,@dt)*3-Month(@dt),
@dt),
120)
+CASE WHEN DATEPART(Quarter,@dt) in(1,4)
THEN \’31\’ELSE \’30\’ END)

–C. 季度的最后一天(直接推算法)
SELECT DATEADD(Day,-1,
CONVERT(char(8),
DATEADD(Month,
1+DATEPART(Quarter,@dt)*3-Month(@dt),
@dt),
120)+\’1\’)

–3.指定日期所在月份的第一天或最后一天
–A. 月的第一天
SELECT CONVERT(datetime,CONVERT(char(8),@dt,120)+\’1\’)

–B. 月的最后一天
SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,@dt),120)+\’1\’)

–C. 月的最后一天(容易使用的错误方法)
SELECT DATEADD(Month,1,DATEADD(Day,-DAY(@dt),@dt))

–4.指定日期所在周的任意一天
SELECT DATEADD(Day,@number-DATEPART(Weekday,@dt),@dt)

–5.指定日期所在周的任意星期几
–A.  星期天做为一周的第1天
SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt)

–B.  星期一做为一周的第1天
SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt)  

////////////////////////////////////////////////////////////////////////////////////////////////////

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(dw,\’2004-10-15\’)

      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指定部分所对应的字符串名称

 

参数 interval的设定值如下:

缩 写(Sql Server)

(Access 和 ASP)

说明

Year

Yy

yyyy

年 1753 ~ 9999

Quarter

Qq

q  

季 1 ~ 4

Month

Mm

m  

月1 ~ 12

Day of year

Dy

一年的日数,一年中的第几日 1-366

Day

Dd

d  

日,1-31

Weekday

Dw

w

一周的日数,一周中的第几日 1-7

Week

Wk

ww 

周,一年中的第几周 0 ~ 51

Hour

Hh

h  

时0 ~ 23

Minute

Mi

分钟0 ~ 59

Second

Ss

s

秒 0 ~ 59

Millisecond

Ms

毫秒 0 ~ 999

 

 

SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm

例如:

select getdate()

2004-09-12 11:06:08.177

整理了一下SQL Server里面可能经常会用到的日期格式转换方法:

举例如下:

select CONVERT(varchar, getdate(), 120 )

2004-09-12 11:06:08

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

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

2004.09.12

select CONVERT(varchar(12) , getdate(), 101 )

09/12/2004

select CONVERT(varchar(12) , getdate(), 103 )

12/09/2004

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

12.09.2004

select CONVERT(varchar(12) , getdate(), 105 )

12-09-2004

select CONVERT(varchar(12) , getdate(), 106 )

12 09 2004

select CONVERT(varchar(12) , getdate(), 107 )

09 12, 2004

select CONVERT(varchar(12) , getdate(), 108 )

11:06:08

select CONVERT(varchar(12) , getdate(), 109 )

09 12 2004 1

select CONVERT(varchar(12) , getdate(), 110 )

09-12-2004

select CONVERT(varchar(12) , getdate(), 113 )

12 09 2004 1

select CONVERT(varchar(12) , getdate(), 114 )

11:06:08.177

版权声明:本文为190196539原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/190196539/archive/2011/02/11/1951374.html