YYYY-MM-DD 格式是明确的,这意味着 SQL Server 不会混淆月份
以及将字符串值转换为DATETIME 的日期。 (我从未遇到过使用四位数年份的格式进行隐式转换的问题。)
在 SQL Server 中存储日期值的“最安全”(也是最方便)的方法是使用 DATETIME 数据类型。
在DATETIME 和字符串之间转换时,使用CONVERT 函数显式指定输入和输出格式。
关于 CONVERT style 参数值的 SQL Server 2005 文档:
http://msdn.microsoft.com/en-us/library/ms187928(SQL.90).aspx
要将字符串表示形式转换为 DATETIME 数据类型:
select CONVERT(datetime, '2009-06-03', 20)
第一个参数是要转换的数据类型,第二个参数是要转换的表达式,第三个参数是样式。
(style 20 是 ODBC 规范格式 = 'YYYY-MM-DD HH:MI:SS'(24 小时制)
[跟进]
将 DATETIME 表达式(例如 getdate() 转换为 'YYYY-MM-DD' 格式的 VARCHAR:
select CONVERT(varchar(10), getdate(), 20)
请注意,指定 varchar(10) 只会获取 etnire 'YYYY-MM-DD HH:MM:SS' 格式的前 10 个字符。
[/跟进]
至于什么决定了默认格式,这将是研究。我们通过指定格式来避免默认格式引起的问题。