2017-04-20 10 views
1

私は間違いがあり続けているのですが、なぜ私があなたを助けてくれることを願っています。私の列値pwdlastset0がnullの場合、計算を行うことができない、のでキャスト付きケース/ IF

CAST((pwdLastSet0/864000000000.0 - 109207) AS DATETIME) AS 'PasswordLastSet',dateadd(d, 80, CAST((pwdLastSet0/864000000000.0 - 109207) as DATETIME)) AS 'expirationdate' 

:私は、次の式を調整するようにしたいです。

だから、私は両方の形を試してみました:

case 
    when pwdlastset0 !=0 
    then 
CAST((pwdLastSet0/864000000000.0 - 109207) AS DATETIME) AS [Password Last Set],dateadd(d, 80, CAST((pwdLastSet0/864000000000.0 - 109207) as DATETIME)) AS 'futurdate' 
    else 
pwslastset0 = 'The password has never been set' 

If pwdlastset0 !=0 
then 
CAST((pwdLastSet0/864000000000.0 - 109207) AS DATETIME) AS [Password Last Set],dateadd(d, 80, CAST((pwdLastSet0/864000000000.0 - 109207) as DATETIME)) AS 'futurdate' 
else 
pwdlastset0 = 'The password has never been set' 

私は "AS" とも= 0はその後、「は示している場合、私は意味、私の条件を変更することなく、試してみましたまだ設定されていない。とにかく私はそれが動作するようにすることはできませんので、あなたの誰かが私がまだ試していない何かのアイデアを持っている場合は、非常にありがとう!

+0

私はちょうどdateadd関数をkepしています... –

答えて

3

pwdlastset0 !=0NULLをチェックしません。

case 
    when pwdlastset0 IS NOT NULL 
    then 
CAST((pwdLastSet0/864000000000.0 - 109207) AS DATETIME) AS [Password Last Set],dateadd(d, 80, CAST((pwdLastSet0/864000000000.0 - 109207) as DATETIME)) AS 'futurdate' 
    else 
pwslastset0 = 'The password has never been set' 
+0

こんにちは、私はそれについて考える必要があります答えてくれてありがとう!とにかく私はキャストのためにエラーが発生し続ける... –

+0

@MartinVincent多分、あなたは 'pwdlastset0'に間違ったデータ型を使用します – Backs

+0

"pwdlastset!= 0"を追加すれば正しい結果が得られますが、 'pwdが一度も設定されていないため、pwdlast = 0を表示する' –

0
が、それはパスワードが設定されていない返され、それが0より大きくない場合pwdlastset0が0以上であるかどうかを確認するためにあなたの比較を変更

IS NULL表現を使用してください。

case 
    when pwdlastset0 > 0 
    then 
CAST((pwdLastSet0/864000000000.0 - 109207) AS DATETIME) AS [Password Last Set],dateadd(d, 80, CAST((pwdLastSet0/864000000000.0 - 109207) as DATETIME)) AS 'futurdate' 
    else 
pwslastset0 = 'The password has never been set'