Sui*_*eep 7 sql sql-server datetime date
Select *
from tableA
inner join tableB on tableA.id = tableB.aid
and cast(a.date AS DATETIME) = CAST('2015-08-24' AS DATETIME)
Run Code Online (Sandbox Code Playgroud)
存储tableA.date的值为'2015-08-24',表示数据没有问题.
当我执行上述声明时,我明白了
将日期数据类型转换为日期时间数据类型会导致超出范围的值
我可以知道为什么不能投了一个date专栏datetime吗?
mar*_*c_s 13
问题的根本原因是:
DATE具有介于接受的值的01-01-0001通12-31-9999DATETIME具有介于接受的值的01-01-1753通12-31-9999因此,如果您碰巧DATE在1753之前有一个或者空/ NULL值 - 这将超出DATETIME可以处理的范围.
您应该停止使用 DATETIME In SQL Server 2008及更高版本.DATETIME2(n)改为使用(n代表你需要的小数秒数).
试试这个:
select *
from tableA
inner join tableB on tableA.id = tableB.aid
and cast(a.date AS DATETIME2(3)) = CAST('2015-08-24' AS DATETIME2(3))
Run Code Online (Sandbox Code Playgroud)
而且我相信这样做会很好.
| 归档时间: |
|
| 查看次数: |
15626 次 |
| 最近记录: |