2012-02-24 26 views
2

我一直在尋找的日期時間確定性截斷功能不可爲空截斷功能,這一次做的工作:確定性的日期時間

DATEADD(dd, DATEDIFF(dd, 0, @date), 0) 

但是,這被認爲是輸入到一個持久化計算列這將成爲主鍵的一部分,所以它必須是不可空的。所以我做了這個:

ISNULL(DATEADD(dd, DATEDIFF(dd, 0, @date), 0), '01.01.1900') 

但是現在表達式變得非確定性。任何人都可以告訴我爲什麼,以及我如何才能確定它?

謝謝!

+1

@Andriy M的回答是正確的,在我之前。您應該接受 – gbn 2012-02-24 15:44:04

回答

4
ISNULL(DATEADD(dd, DATEDIFF(dd, 0, @date), 0), 0) 

也就是說,我的猜測是不確定性的部分是'01.01.1900',因爲它取決於區域設置。

+0

@gbn,Martin Smith,JNK:謝謝,夥計們。 – 2012-02-24 15:40:58

+1

我們通常在這裏http://chat.stackexchange.com/rooms/179/the-heap – gbn 2012-02-24 15:43:34

0

不要使用字符串常量,使用一些任意的數字,而不是01 .01.1900'