假设我的数据库中有一个日期时间,例如:2011-10-24 00:00:00.000
。我想将其转换为24/10/2011
,但我找不到本机SQL Server的方法,在运行查询后我不想在代码中执行此操作。
我尝试过如下操作(as per the manual)
select CONVERT(datetime, '2011-10-24 00:00:00.000', 103);
但这没有用,我的结果是:
Msg 242,Level 16,State 3,Line 1
将char数据类型转换为datetime数据类型会导致超出范围的datetime值。
我怀疑这可能是由于小数精度或时间部分,但我不知道如何解决这个问题而不会导致一些字符串黑客 - 正则表达式替换废话(我宁愿不这样做,如果我这样做,我最终可能会在查询后完成转换。)
答案 0 :(得分:3)
如果我正确阅读了本手册,你应该使用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