mysql - MYSQL如何排除2个不同日期之间的工作日
问题描述
我需要计算该日期之间的天数。我有 2 个不同的日期,date1 名称 vcr_date 和 date2 名称 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
解决方案
我在下面的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
推荐阅读
- javascript - ReactJS:对 setState 进行计算并更新
- c# - 如何将 ComboBox 添加到 Binding DataGridView 上的特定列?
- javascript - 在多维数组中比较以找到在其他多维数组中使用的正确索引失败
- nosql - 有可能用键值将数据存储在 HDFS 中吗?
- java - Eclipse e4 导出 - build.xml:执行此行时出现问题:
- apache-drill - Apache Drill Kudu 查询不支持范围 + 哈希多级分区
- camunda - HTTP-CONNECTOR 之间的 Camunda-Pass 参数
- android - 无法在 Flutter 中设置 DropdownMenuItem 内的自定义列表
- json - MongoDB如何使用猫鼬模式将角色连接到用户
- c# - 读取 XML 并将其作为 C# 中的字符串列表