我正在尝试将yyyymmdd格式的浮点数转换为日期时间。据此,该格式的正确样式代码为112。
码:
select
convert(datetime,cast(myDate as numeric),112)
from MyTable
错误:
Msg 8115, Level 16, State 2, Line 1
Arithmetic overflow error converting expression to data type datetime.
没有该cast as numeric
部分,我会得到相同的错误。我已经环顾了几个小时,但找不到任何可解决此问题的方法。如果您知道将浮点数转换为日期时间的更好方法,那么我会接受的。
感谢您的帮助。
编辑
这是工作代码:
SELECT
case when isdate(CAST(CAST(myDate AS INT) AS VARCHAR(8))) = 1
then CAST(CAST(CAST(myDate AS INT) AS VARCHAR(8)) AS DATETIME)
end
from MyTable
我将其包装在中,isdate
因为其中存在一些无效的日期。感谢Matt的帮助。
EDIT2
更好的版本:
SELECT
TRY_CAST(CAST(CAST(myDate AS INT) AS VARCHAR(8)) AS DATETIME)
FROM MyTable
首先,您必须将FLOAT转换为VARCHAR。并且由于FLOAT具有许多小数点,因此必须首先将其转换为INT。
DECLARE @myDate FLOAT
SET @myDate = 20140721
SELECT CAST(CAST(@myDate AS INT) AS VARCHAR(8))
--20140721
然后,您可以将VARCHAR转换为DATE或DATETIME格式。
DECLARE @myDate FLOAT
SET @myDate = 20140721
SELECT CAST(CAST(CAST(@myDate AS INT) AS VARCHAR(8)) AS DATE)
--2014-07-21
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句