67

DateTime土曜日または日曜日の列の値を除外するにはどうすればよいですか?

たとえば、次のデータがあるとします。

date_created
'2009-11-26 09:00:00'  -- Thursday
'2009-11-27 09:00:00'  -- Friday
'2009-11-28 09:00:00'  -- Saturday
'2009-11-29 09:00:00'  -- Sunday
'2009-11-30 09:00:00'  -- Monday

これは私が探している結果です:

date_created
'2009-11-26 09:00:00'  -- Thursday
'2009-11-27 09:00:00'  -- Friday
'2009-11-30 09:00:00'  -- Monday

ありがとう!

4

7 に答える 7

134

曜日の計算を行う場合、現在のDATEFIRST設定を考慮することが重要です。@@DATEFIRSTこのクエリは、週の最初の曜日の可能な設定を考慮して、週末の日を常に正しく除外します。

SELECT *
FROM your_table
WHERE ((DATEPART(dw, date_created) + @@DATEFIRST) % 7) NOT IN (0, 1)
于 2009-11-26T14:47:28.783 に答える
23
SELECT date_created
FROM your_table
WHERE DATENAME(dw, date_created) NOT IN ('Saturday', 'Sunday')
于 2009-11-26T14:49:22.817 に答える
14

SQL Server を使用していると仮定して、dw で DATEPART を使用します。

SELECT date_created
FROM your_table
WHERE DATEPART(dw, date_created) NOT IN (1, 7);

編集: DATEPART(dw) によって返される実際の数値は、SET DATEFIRST を使用して設定された値によって決定されることを指摘する必要があります:
http://msdn.microsoft.com/en-us/library/ms181598.aspx

于 2009-11-26T14:39:26.447 に答える
10

関数を試してくださいDATENAME()

select [date_created]
from table
where DATENAME(WEEKDAY, [date_created]) <> 'Saturday'
  and DATENAME(WEEKDAY, [date_created]) <> 'Sunday'
于 2009-11-26T14:30:37.197 に答える
4

答えは、サーバーのウィークスタートの設定によって異なります。

SELECT [date_created] FROM table WHERE DATEPART(w,[date_created]) NOT IN (7,1)

日曜日がサーバーの週の最初の曜日である場合

また

SELECT [date_created] FROM table WHERE DATEPART(w,[date_created]) NOT IN (6,7)

月曜日がサーバーの週の最初の日である場合

質問があればコメントしてください:-)

于 2009-11-26T14:42:01.650 に答える
3

デフォルト値として表の列に休業日数を計算します--更新されます

SQL を使用している場合は、次のクエリが役立ちます: http://gallery.technet.microsoft.com/Calculate...

于 2012-10-25T19:11:09.620 に答える
0

このコードを試してください

select (DATEDIFF(DD,'2014-08-01','2014-08-14')+1)- (DATEDIFF(WK,'2014-08-01','2014-08-14')* 2)
于 2014-08-14T10:46:08.137 に答える