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

发布于 2024-11-03 12:24:03 字数 237 浏览 0 评论 0原文

我有一个关于 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

じ违心 2024-11-10 12:24:03

否。

如果您使用的是日期时间列(与 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)中可用的任何工具将该值作为日期时间值传递 - 让库处理任何必要的转换。

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:

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

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文