2016-12-11 2 views
0

従業員の給与を更新しようとしていますが、会社と1年以上働いていれば給料を増やしたいだけです。私はどのようにクエリを1年の部分を伝えるか分からない。私はすべての従業員に支払うだけでなく、会社と1年間以上一緒に働いているものに加えています。 365日以上働いている従業員のみが必要だとSQLにどのように伝えますか?1年以上働いていると従業員の給料を2ドルで更新する

UPDATE 
    TEmployees 
SET 
    monHourlyRate = monHourlyRate + 2 
WHERE 
    dteHireDate > 365 
+0

'日付または日時列をdteHireDate'ていますか? –

答えて

4
UPDATE 
    TEmployees 
SET 
    monHourlyRate = monHourlyRate + 2 
WHERE 
    dteHireDate <= DATEADD(year,-1,CAST(GETDATE() AS DATE)) 

を使用することができます。

UPDATE 
    TEmployees 
SET 
    monHourlyRate = monHourlyRate + 2 
WHERE 
    DATEDIFF(DAY,dteHireDate,CAST(GETDATE() AS DATE)) + 1 >= 365 
+0

問題の特定の条件は> 365日を使用することです。 –

+1

@MartinSmith実際にそれは質問で365以上、タイトルで1年なので、私は1つを見せていて、あなたはもう1つを見せています。多くの投稿で見るようにうるう年が考慮されていない可能性があります。それは私がそれを考慮しないように私はペットのピースのビットですので、私は答えとしてそれを処理する方法を示したい – Matt

2

あなたはおそらく動作しますが、閏年は366日であったであろうので、うるう年であればオフすることができた次のような一般的な答えが表示されます

UPDATE 
    TEmployees 
SET 
    monHourlyRate = monHourlyRate + 2 
WHERE 
    dteHireDate < DATEADD(DAY, -365, CAST(GETDATE() AS DATE)) 
2
UPDATE 
    TEmployees 
SET 
    monHourlyRate = monHourlyRate + 2 
WHERE 
    dteHireDate < DATEADD(YY,-1,CAST(GETDATE() AS DATE)) 
1

これを試してみてください:

UPDATE 
    TEmployees 
SET 
    monHourlyRate = monHourlyRate + 2 
WHERE 
    dteHireDate <= DATEADD(year,-1, (GETDATE()) 
関連する問題