SQLSERVER日期格式转换详解

数据库中一般存储的时间格式为yyyy-mm-ddhh:mm:ss如果想转换为短日期格式yyyy-mm-dd可以使用sqlserver指令中的convert函数:使用CONVERT:CONVERT(data_type[(length)],Expression[,style])参数表达式是任何有效的Microsoft®SQLServer™表达式。
data_type目标系统提供的数据类型,包括h3int和sql_variant。
不能使用用户定义的数据类型。
数据类型lengthnchar、nvarchar、char、varchar、binary或varbinary的可选参数。
样式日期格式样式,将日期和时间数据或小数据转换为字符数据(nchar、nvarchar、char、varchar、nchar或nvarchar数据类型)或字符串格式样式,将浮点型、实数、财务型或小数据转换为数据到字符数据(数据类型nchar、nvarchar、char、varchar、nchar、nvarchar)。
SQLServer支持使用科威特算法的阿拉伯风格数据格式。
表中,左侧两列表示将日期和时间或小写日期和时间转换为字符数据的样式值。
将100添加到样式值以获得包含世纪数字的四位数年份(yyyy)。
不带喇叭编号(yy)带喇叭编号(yyyy)标准I/O**-0或100(*)默认值monddyyyyhh:miAM(或PM)1101USmm/dd/yyyy2102ANSIyy.mm.dd3103UK/Francedd/mm/yy4104德国dd.mm.yy5105意大利dd-mm-yy6106-ddmonyy7107-mondd,yy8108-hh:mm:ss-9或109(*)默认+毫秒monddyyyyhh:mi:ss:mmmAM(或PM)10110美国mm-dd-yy11111日本yy/mm/dd12112ISOyymmdd-13或113(*)欧洲默认值+毫秒ddmonyyyyhh:mm:ss:mmm(24h)14114-hh:mi:ss:mmm(24h)-20或120(*)ODBC规范yyyy-mm-ddhh:mm:ss[.fff]-21或121(*)ODBC规范(以毫秒为单位)yyyy-mm-ddhh:mm:ss[.fff]-126(***)ISO8601yyyy-mm-ddThh:mm:ss:mmm(无空格)-130*科威特ddmonyyyyhh:mi:ss:mmmAM-131*科威特日/月/年yhh:mi:ss:mmmAM*默认值(style0、100、9、109、13、113、20、120、21或121)始终返回世纪数字(yyyy)。
**转换为日期时间时输入,转换为字符数据时输出。
***专用于XML。
将日期和时间数据或小数据转换为字符数据时,输出格式如下表所示。
对于从浮点数、货币或小货币数据到字符数据的转换,输出相当于样式2。
对于从实际数据到字符数据的转换,输出相当于样式1。

SQL SERVER 日期格式转换详解

在SQLServer2000及更高版本中,GETDATE()函数通常用于获取当前系统时间。
该函数不仅可以返回日期,还可以通过CONVERT函数进行格式转换,以满足不同格式的显示需要。
CONVERT函数有多种参数,如STYLE,指定日期或时间输出的样式,例如0或100代表月、日、年、时、分的标准格式,101是美制毫米。
/dd/yyyy格式。
样式选项范围从1到131,涵盖许多常见的国际日期格式,例如102(ANSIyy.mm.dd格式)、103(英国/法国dd/mm/yy)和104(德国dd.mm.yy))ETC。

此外,还有专门为XML设计的格式,例如126(ISO8601)和130(回历系统)。
默认情况下,SQLServer将两位数年份解释为2049年之后,但这可以通过配置选项进行更改。
转换为Smalldatetime时,秒和毫秒将被截断或显示为0。
可以通过调整varchar或char数据类型的长度来自定义输出的日期部分。
以下是转换函数的一些示例:-SELECTCONVERT(varchar(100),GETDATE(),0)将输出格式为“0516200810:57AM”的日期。
-SELECTCONVERT(varchar(100),GETDATE(),20)将返回完整的日期和时间,如“2008-05-1610:57:47”。
总体而言,SQLServer中的日期格式转换为适应不同的业务需求和国际化标准提供了灵活丰富的选项。