2016-04-04 24 views
0

これは、今日の日付とテーブルの列を比較する必要がある状況です。特定の行の値が今日よりも早い場合(言い換えれば、日付がすでに経過している場合、「lapsed」というフレーズを持つ仮想列をマークする必要があります)日付のSQLの比較

以下はSQL使用されています。

SELECT 
datediff(day, sysdatetime(), policy_expiration_dt) As 'DayDiff' 
,Case When 'DayDiff' < 0 Then 'Lapsed' 
FROM TABLE_NAME 

DATEDIFF関数を含む第1の列は、比較を行い、2列目には日が経過した場合の経過としてマークし、基本的

+1

質問は何ですか? – Matthew

+0

あなたの質問は何ですか? –

+1

@ Kamran..なぜあなたは質問に不在のときに 'case'式に' end'部分を追加しましたか? –

答えて

-1

SQL文が実行されるかの順序エイリアスを使用できないため、CASE文でdatediff()関数を使用する必要があります。

SQLクエリの実行の順序は次のとおりです。あなたがこれを行う必要があり

1. FROM 
2. ON 
3. OUTER 
4. WHERE 
5. GROUP BY 
6. CUBE | ROLLUP 
7. HAVING 
8. SELECT 
9. DISTINCT 
10. ORDER BY 
11. TOP 

SELECT DATEDIFF(day, SYSDATETIME(), policy_expiration_dt) AS 'DayDiff' 
    , CASE 
     WHEN DATEDIFF(day, SYSDATETIME(), policy_expiration_dt) < 0 THEN 'Lapsed' 
     END 
FROM TABLE_NAME; 
+0

私はなぜ投票したのかわからない。私は誰かが私のコメントを好きではなかったと思う... meh!.... user2101538ように受け入れてくれてありがとう –