SQL Server 短日期输出

2012-04-05  金城  3701

在MS Sql Server中时间类型默认被输出为 2012-04-05 22:49:10.130 这种完整的形式。

如果你只想得到 年月日部分 如 2012-04-05可以试试这个语句:

select convert(varchar(10),getDate(),120)

这样可也少用了很多次 datepart或datename 函数。

CONVERT 函数和CAST函数同为类型转换函数,功能类似;CONVERT有一项功能就是可格式化时间字符串。

CONVERT 语法:

CONVERT ( data_type [ ( length ) ],expression [,style ] )

CONVERT 参数:

expression
任何有效的表达式。

data_type
作为目标的系统提供数据类型。这包括 xml、bigint 和 sql_variant。不能使用别名数据类型。有关可用数据类型的详细信息,请参阅数据类型 (Transact-SQL)。

length
nchar、nvarchar、char、varchar、binary 或 varbinary 数据类型的可选参数。对于 CONVERT,如果未指定 length,则默认为 30 个字符。

style
用于将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)的日期格式的样式;或用于将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)的字符串格式的样式。如果 style 为 NULL,则返回的结果也为 NULL。

SQL Server 通过使用科威特算法来支持阿拉伯样式的日期格式。

在下表中,左侧的两列表示将 datetime 或 smalldatetime 数据转换为字符数据的 style 值。将 style 值加 100,可获得包括世纪数位的四位年份 (yyyy)。

不带世纪数位 (yy) (1)带世纪数位 (yyyy)标准输入/输出 (3)
-0 或 100 (1,2)默认设置mon dd yyyy hh:miAM(或 PM)
1101美国mm/dd/yyyy
2102ANSIyy.mm.dd
3103英国/法国dd/mm/yy
4104德国dd.mm.yy
5105意大利dd-mm-yy
6106 (1)-dd mon yy
7107 (1)-mon dd,yy
8108-hh:mm:ss
-9 或 109 (1,2)默认设置 + 毫秒mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10110美国mm-dd-yy
11111日本yy/mm/dd
12112ISOyymmdd
-13 或 113 (1,2)欧洲默认设置 + 毫秒dd mon yyyy hh:mm:ss:mmm(24h)
14114-hh:mi:ss:mmm(24h)
-20 或 120 (2)ODBC 规范yyyy-mm-dd hh:mi:ss(24h)
-21 或 121 (2)ODBC 规范(带毫秒)yyyy-mm-dd hh:mi:ss.mmm(24h)
-126 (4)ISO8601yyyy-mm-ddThh:mm:ss.mmm(无空格)
 127(6)带时区 Z 的 ISO8601。yyyy-mm-ddThh:mm:ss.mmmZ (无空格)
-130 (1,2)回历 (5)dd mon yyyy hh:mi:ss:mmmAM
-131 (2)回历 (5)dd/mm/yy hh:mi:ss:mmmAM

1 这些样式值将返回不确定的结果。包括所有 (yy)(不带世纪数位)样式和一部分 (yyyy)(带世纪数位)样式。

2. 默认值(style 0 或 100、9 或 109、13 或 113、20 或 120 以及 21 或 121)始终返回世纪数位 (yyyy)。

3 转换为 datetime 时输入;转换为字符数据时输出。

4 为用于 XML 而设计。对于从 datetime 或 smalldatetime 到字符数据的转换,其输出格式如上一个表所述。对于从 float、money 或 smallmoney 到字符数据的转换,其输出相当于 style 值为 2。对于从 real 到字符数据的转换,其输出相当于 style 值为 1。

5. 回历是有多种变体的日历系统。SQL Server 2005 使用科威特算法。

重要事项:

默认情况下,SQL Server 基于截止年份 2049 年来解释两位数的年份。换言之,就是将两位数的年份 49 解释为 2049,将两位数的年份 50 解释为 1950。许多客户端应用程序(如基于自动化对象的应用程序)都使用截止年份 2030 年。SQL Server 提供了"两位数年份截止"配置选项,可通过此选项更改 SQL Server 使用的截止年份,从而对日期进行一致处理。建议您指定四位数年份。

6. 仅支持从字符数据转换为 datetime 或 smalldatetime。时区指示符 Z 为可选项。仅表示日期或时间成分的字符数据将转换为 datetime 数据类型。未指定的时间成分设置为 00:00:00.000,未指定的日期成分设置为 1900-01-01。

从 smalldatetime 转换为字符数据时,包含秒或毫秒的样式将在这些位置上显示零。使用相应的 char 或 varchar 数据类型长度从 datetime 或 smalldatetime 值转换时,可截断不需要的日期部分。