MS SQL 服务器的日期/时间值字符串表示的独立格式?
我有一个关于 MS SQL Server 字符串到日期时间隐式转换的问题。
具体来说,我能否确定插入到日期时间列中的“yyyy-mm-dd hh:mm:ss”(例如“2011-04-28 13:01:45”)格式的字符串将始终自动转换为日期时间类型,无论服务器上使用什么区域或语言设置?
如果没有,是否存在这样一种独立的日期时间字符串格式?
它是否取决于 MSSQL 服务器版本?如何?
先感谢您
I have a question about MS SQL Server string-to-datetime implicit conversion.
Specifically, can I be sure that a string in the 'yyyy-mm-dd hh:mm:ss' (e.g '2011-04-28 13:01:45') format, inserted into the datetime column, will always be automatically converted to a datetime type, no matter what regional or language settings are used on the server?
If no, does there exist such an independent string format for date time?
Does it depend on MSSQL server version and how?
thank you in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
否。
如果您使用的是日期时间列(与 2008 年引入的新类型相反),则安全格式包括日期和时间组件之间的字母 T,例如
'2011-04-28T13:01:45 '
。对于不明确的日期(其中日期 <= 12),SQL Server 可能会混淆日期和月份:
但是,更一般地说,您应该找到一种方法来避免首先将日期时间值视为字符串,例如,如果您传递从其他(非 SQL)代码获取此值,然后使用数据访问库(例如 ADO.Net)中可用的任何工具将该值作为日期时间值传递 - 让库处理任何必要的转换。
No.
If you're using a datetime column (as opposed to the newer types introduced in 2008), the safe format includes the letter T between the date and time components, e.g.
'2011-04-28T13:01:45'
.For an ambiguous date (where the day <= 12), SQL Server can confuse day and month:
More generally, however, you should find a way to avoid treating datetime values as strings in the first place, e.g. if you're passing this value from some other (non-SQL) code, then use whatever facilities are available in your data access library (e.g. ADO.Net) to pass the value across as a datetime value - let the library deal with any necessary translations.