与えられた開始/終了日付時刻が個別ので、週末の日に落ちるかもしれしかし:
- (DAYOFWEEK(IF(date1 < date2, date1, date2)) = 1)
与えられた日付の1が日曜日である場合のいずれかが、1
- (DAYOFWEEK(IF(date1 > date2, date1, date2)) = 7)
を引きます指定された日付は土曜日です。1を除きます。
週末は土曜日の土曜日の土曜日の除外日である「仕事日」があります。&日曜日。
ここでは、各関数または関数呼び出しのセットを個々の列として分割してそれぞれをトレースするクエリを示します。 2つの日付を指定してサブクエリを調整します。
select
date1
, date2
, DATEDIFF(date2, date1) "datediff"
, ABS(DATEDIFF(date2, date1)) abs_datediff
, ABS(DATEDIFF(date2, date1)) + 1 diff_2end_dt
, DAYOFWEEK(date2) dt2_dow
, ADDDATE(date2, INTERVAL 1 - DAYOFWEEK(date2) DAY) start_of_wk_dt2
, DAYOFWEEK(date1) dt1_dow
, ADDDATE(date1, INTERVAL 1 - DAYOFWEEK(date1) DAY) start_of_wk_dt1
, DATEDIFF(ADDDATE(date2, INTERVAL 1 - DAYOFWEEK(date2) DAY),
ADDDATE(date1, INTERVAL 1 - DAYOFWEEK(date1) DAY)) diff_wksby7
, ABS(DATEDIFF(ADDDATE(date2, INTERVAL 1 - DAYOFWEEK(date2) DAY),
ADDDATE(date1, INTERVAL 1 - DAYOFWEEK(date1) DAY))) abs_diff_wksby7
, ABS(DATEDIFF(ADDDATE(date2, INTERVAL 1 - DAYOFWEEK(date2) DAY),
ADDDATE(date1, INTERVAL 1 - DAYOFWEEK(date1) DAY)))/7 * 2 diff_wkends
, DAYOFWEEK(IF(date1 < date2, date1, date2)) dow_min
, DAYOFWEEK(IF(date1 > date2, date1, date2)) dow_max
from (
select date_add(now(), INTERVAL -34 DAY) as date1, date_add(now(), INTERVAL -2 DAY) as date2
) d
ありがとうございました。この投稿は本当に私を理解するのを助けました。 (Y) –