MYSQL Как исключить день недели между двумя разными датами - PullRequest
0 голосов
/ 26 февраля 2019

Мне нужно посчитать количество дней между этой датой.У меня есть 2 разные даты, дата1 имя vcr_date и дата2 имя bbp_date.Например, vcr_date = '2019-01-01' - вторник, а bbp_date = '2019-01-07' - понедельник, а количество дней между ними равно 6 дням.Если я хочу исключить пятницу и субботу, счет будет 4 дня.Как это сделать в MYSQL?

Пример таблицы:

CREATE TABLE `datatest` (
  `vcr_date` date default NULL,
  `bbp_date` date default NULL,
  `comp_name` varchar(50) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='InnoDB free: 102400 kB; InnoDB free: 99328 kB; InnoDB free: ';
#----------------------------
# Records for table datatest
#----------------------------

insert  into datatest values 
('2019-01-06', '2019-01-02', 'J.O.E SUPPLIER SDN BHD'), 
('2019-01-05', '2019-01-03', 'AURAJUBLI SDN BHD'), 
('2019-01-14', '2019-01-04', 'NEW MT CENTURY SDN. BHD.'), 
('2019-01-25', '2019-01-05', 'KMT SUPPLY SDN BHD'), 
('2019-01-10', '2019-01-06', 'SASHWIN SDN. BHD.'), 
('2019-01-17', '2019-01-07', 'J.O.E SUPPLIER SDN BHD');

SQL для подсчета дней:

SELECT *,datediff(vcr_date,bbp_date) as daycount
FROM datatest

1 Ответ

0 голосов
/ 26 февраля 2019

Я пробовал в SQL Server, как показано ниже, и надеюсь, может помочь вам немного.

declare @start_dt date,
        @end_dt date
set @start_dt = '20190101'
set @end_dt = '20190107'

;with cte
AS
(
select @start_dt AS dt
UNION ALL
SELECT dateadd(day,1,dt)
FROM cte
WHERE dt < DATEADD(DAY,DATEDIFF(DAY,0,@end_dt),0) and datename(dw,dateadd(day,1,dt)) not in('Monday','Saturday')
)
select count(*)
from cte
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...