SQL Server ODBC 规范日期格式为 DD/MM/YYYY?

发布于 2024-12-13 03:58:36 字数 571 浏览 3 评论 0原文

假设我的数据库中有一个日期时间,例如:2011-10-24 00:00:00.000。我想将其转换为 24/10/2011,但我找不到执行此操作的本机 SQL Server 方法,并且我不想在运行我的代码后在代码中执行此操作询问。

我尝试执行以下操作(按照手册

select CONVERT(datetime, '2011-10-24 00:00:00.000', 103);

但是这不起作用,我的结果是:

消息 242,级别 16,状态 3,第 1 行
将 char 数据类型转换为 datetime 数据类型导致日期时间值超出范围。

我怀疑这可能是由于小数精度或其中的时间部分造成的,但我不确定如何解决这个问题而不导致一些字符串黑客正则表达式替换废话(我宁愿不这样做,如果我这样做的话,我可能最终会在查询后进行转换)。

Lets say I have a datetime from my database, such as: 2011-10-24 00:00:00.000. I would like to convert this into 24/10/2011, but I can't find the native SQL Server way to do this, and I'd rather no do this in the code after I run my query.

I've tried doing something as follows (as per the manual)

select CONVERT(datetime, '2011-10-24 00:00:00.000', 103);

But that doesn't work out, my result is:

Msg 242, Level 16, State 3, Line 1
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

I suspect this might be due to the decimal precision, or the time part of this, but I'm not sure how to go about this without resulting to some string-hacking-regex-replace nonsense (and I'd rather no do that, I might as well end up doing the conversion after the query if I do that).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(1

荒岛晴空 2024-12-20 03:58:36

如果我正确地阅读了手册,您应该使用 stlye 120“ODBC canonical” - 不?

尝试:

select CONVERT(datetime, '2011-10-24 00:00:00.000', 120);

在我的机器上工作:-) 这为您提供了一个可以使用的 SQL Server DATETIME

如果您想将其进一步转换为 24/10/2011,请使用第二个 CONVERT 转换为 VARCHAR 字符串:

select CONVERT(VARCHAR(50), CONVERT(datetime, '2011-10-24 00:00:00.000', 120), 103)

这给了我:

24/10/2011

If I read the manual correctly, you should be using stlye 120 "ODBC canonical" - no??

Try:

select CONVERT(datetime, '2011-10-24 00:00:00.000', 120);

Works on my machine :-) This gives you a SQL Server DATETIME to work with.

If you want to convert that further into 24/10/2011, use a second CONVERT to convert into a VARCHAR string:

select CONVERT(VARCHAR(50), CONVERT(datetime, '2011-10-24 00:00:00.000', 120), 103)

That gives me:

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