oek*_*rem 6 sql sql-server sql-server-2005
这个select语句给我算术错误信息:
SELECT CAST(FLOOR((CAST(LeftDate AS DECIMAL(12,5)))) AS DATETIME), LeftDate
FROM Table
WHERE LeftDate > '2008-12-31'
Run Code Online (Sandbox Code Playgroud)
虽然这个工作:
SELECT CAST(FLOOR((CAST(LeftDate AS DECIMAL(12,5)))) AS DATETIME), LeftDate
FROM Table
WHERE LeftDate < '2008-12-31'
Run Code Online (Sandbox Code Playgroud)
数据是否有问题(我检查过空值,但没有)?
通常,将日期转换为数字或字符串以对其执行日期操作是非常低效的.(转换是相对密集的,字符串操作也是如此.)坚持使用日期函数要好得多.
你给出的例子是(我相信)去除DateTime的时间部分,以下是没有转换开销的情况......
DATEADD(DAY, DATEDIFF(DAY, 0, <mydate>), 0)
Run Code Online (Sandbox Code Playgroud)
这也应该避免算术溢出......