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

CIT*_*TBL 4 sql-server sql-server-2005 sql-server-2008

我有一个关于MS SQL Server字符串到日期时隐式转换的问题.

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

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

它取决于MSSQL服务器版本以及如何?

先感谢您

Dam*_*ver 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
Run Code Online (Sandbox Code Playgroud)

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

  • 您也可以使用"YYYYMMDD hh:mm:ss",它将始终被正确解释. (5认同)