2017-07-04 4 views
0

SQL Serverで作業しています。既存の列を更新できず、データ/列を追加できません。datetimeに応じて平日または週末にSQL Serverの列を設定します。

私はdttime (yyyy-mm-dd hh:mm:ss)というカラムを持っています。このカラムは、各エントリに対する日付の時間値から構成されています。 私は、既存の列を選択すると、他の日の場合、曜日はどちらか土曜日またはある「週末」日曜日と「平日」として取り込まれますwdとして新しい列

他に基づいて、私は同様の方法で移入する二つ以上の異なるものを持っている場合には、間違いはここにある、またはこれに任意の代替がある場合

SELECT id, total, 
case when dayofweek(dttime) in (1,7) then 'Weekend' else 'Weekday' end as wd 
from table_name 

がお勧めしてください:

私は、以下のクエリを使用していますカラム。

+1

下にしてみてください? – HoneyBadger

+1

@HoneyBadger 'dayofweek'はSQL Serverに存在しません。' 'dayofweek'は認識された組み込み関数名ではないため、エラーが発生している可能性があります。 – Arulkumar

答えて

0

あなたはあなたの期待を達成するためにdwまたはweekdayDATENAMEを使用することができます。

SELECT id, total, 
     CASE WHEN DATENAME (dw, dttime) IN ('Saturday', 'Sunday') THEN 'Weekend' ELSE 'Weekday' END AS wd 
FROM table_name 

はまた、週の最初の日はそう日曜日のための整数値がDATEFIRSTの設定値に基づいて、SET DATEFIRSTによって設定することができます土曜日は変更することができます。だからdttimeのためにDATENAMEを取得しても混乱はありません。

詳しくは、DATENAMEは現在の曜日名を返しますが、DATEPARTDATEFIRSTに基づいて返されます。

SELECT @@DATEFIRST AS 'First Day', 
     DATEPART(dw, GETDATE()) AS 'Today', 
     DATENAME(dw, GETDATE()) AS 'TodayName'; 

7戻りSELECT @@DATEFIRST場合は、土曜日に

CASE WHEN DATEPART(dw, dttime) IN (1, 7) THEN 'Weekend' ELSE 'Weekday' END AS wd 
土曜日のためにここで

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

0

DATEPART機能が必要です。これを試してください:あなたはあなたのクエリに誤りがあると思いますなぜ

SELECT id, total, 
case when DATEPART(dw,dttime) in (6,7) then 'Weekend' else 'Weekday' end as wd 
from table_name 
0

クエリ

SELECT id, total, 
case when DATEPART(dw,dttime) in (1,7) then 'Weekend' else 'Weekday' end as wd 
from table_name 
関連する問題