erc*_*can 2 sql sql-server-2005
我正在为datetime寻找一个确定性截断函数,这个函数完成了这项工作:
DATEADD(dd, DATEDIFF(dd, 0, @date), 0)
Run Code Online (Sandbox Code Playgroud)
但这应该是持久计算列的输入,它将成为主键的一部分,因此它必须是不可为空的.所以我做了这个:
ISNULL(DATEADD(dd, DATEDIFF(dd, 0, @date), 0), '01.01.1900')
Run Code Online (Sandbox Code Playgroud)
但现在表达变得不确定了.任何人都可以告诉我为什么,以及如何让它确定性?
谢谢!
01.01.1900 不是确定性的......
这是:
ISNULL(DATEADD(dd, DATEDIFF(dd, 0, @date), 0), CONVERT(datetime, '19001010', 112)))
Run Code Online (Sandbox Code Playgroud)
或这个
ISNULL(DATEADD(dd, DATEDIFF(dd, 0, fooDT), 0), 0)
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅为什么我的CASE表达式不确定?这导致转换和验证日期字符串的最佳方式
| 归档时间: |
|
| 查看次数: |
150 次 |
| 最近记录: |