SQL Server 短日期输出
在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) |
| 1 | 101 | 美国 | mm/dd/yyyy |
| 2 | 102 | ANSI | yy.mm.dd |
| 3 | 103 | 英国/法国 | dd/mm/yy |
| 4 | 104 | 德国 | dd.mm.yy |
| 5 | 105 | 意大利 | dd-mm-yy |
| 6 | 106 (1) | - | dd mon yy |
| 7 | 107 (1) | - | mon dd,yy |
| 8 | 108 | - | hh:mm:ss |
| - | 9 或 109 (1,2) | 默认设置 + 毫秒 | mon dd yyyy hh:mi:ss:mmmAM(或 PM) |
| 10 | 110 | 美国 | mm-dd-yy |
| 11 | 111 | 日本 | yy/mm/dd |
| 12 | 112 | ISO | yymmdd |
| - | 13 或 113 (1,2) | 欧洲默认设置 + 毫秒 | dd mon yyyy hh:mm:ss:mmm(24h) |
| 14 | 114 | - | 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) | ISO8601 | yyyy-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 值转换时,可截断不需要的日期部分。
