MS SQL Server的日期/时间值字符串表示的独立格式?

时间:2011-04-28 08:44:53

标签: sql-server sql-server-2005 sql-server-2008

我对MS SQL Server字符串到日期时隐式转换有疑问。

具体来说,我可以确定插入日期时间列的'yyyy-mm-dd hh:mm:ss'(例如'2011-04-28 13:01:45')格式的字符串将会无论服务器上使用何种区域或语言设置,始终会自动转换为日期时间类型?

如果否,是否存在日期时间的独立字符串格式?

它是否依赖于MSSQL服务器版本以及如何使用?

提前谢谢

1 个答案:

答案 0 :(得分:6)

没有

如果您使用的是日期时间列(与2008年推出的较新类型相对),则安全格式包括日期和时间组件之间的字母T,例如'2011-04-28T13:01:45'

对于模糊日期(日期< = 12),SQL Server可能会混淆日期和月份:

set language british
select MONTH(CONVERT(datetime,'2011-04-05 13:01:45'))

----
5

set language british
select MONTH(CONVERT(datetime,'2011-04-05T13:01:45'))

----
4

但是,更一般地说,您应该找到一种方法来避免首先将日期时间值视为字符串,例如:如果您从其他(非SQL)代码传递此值,则使用数据访问库中可用的任何工具(例如ADO.Net)将值作为日期时间值传递 - 让库处理任何必要的翻译。