Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 以特定格式查找两个日期之间的工作日_Mysql_Date - Fatal编程技术网

Mysql 以特定格式查找两个日期之间的工作日

Mysql 以特定格式查找两个日期之间的工作日,mysql,date,Mysql,Date,这里有个问题。我需要找到两个日期之间的工作日(没有周末)。我目前发现并能够成功地使用此方法: SELECT 5 * (DATEDIFF(DateClosed, DateOpened) DIV 7) + MID('0123455501234445012333450122234501101234000123450', 7 * WEEKDAY(DateOpened) + WEEKDAY(DateClosed) + 1, 1) AS TotalResolutionTimeBusinessDays

这里有个问题。我需要找到两个日期之间的工作日(没有周末)。我目前发现并能够成功地使用此方法:

SELECT 5 * (DATEDIFF(DateClosed, DateOpened) DIV 7) + MID('0123455501234445012333450122234501101234000123450', 
  7 * WEEKDAY(DateOpened) + WEEKDAY(DateClosed) + 1, 1) AS TotalResolutionTimeBusinessDays 
FROM table1
这是一个基于矩阵的复杂计算:

 | M T W T F S S
-|--------------
M| 0 1 2 3 4 5 5
T| 5 0 1 2 3 4 4
W| 4 5 0 1 2 3 3
T| 3 4 5 0 1 2 2
F| 2 3 4 5 0 1 1
S| 0 1 2 3 4 0 0
S| 0 1 2 3 4 5 0
在矩阵中,任何给定的x和y值对(工作日(@S)和工作日(@E)的交集都会产生两个值之间的工作日差。表中的49个值被连接成以下字符串:
0123455501234445012333450122345501101234000123450

这对我来说很好,但现在我需要用另一种格式表示日期之间的差异。例如:假设我们有两个日期:开始日期='2013-06-28 01:27:35'和结束日期='2013-07-08 16:47:21'。如果我们使用上述方法,我们得到7个工作日,这是正确的。但我需要计算日期之间的所有差异(包括小时和分钟)这样看起来

SELECT TIME_TO_SEC(TIMEDIFF('2013-07-08 16:47:21','2013-06-28 01:27:35')) / 3600 / 24 
如果没有周末,其值应为7.64天


任何关于如何基于该格式编写计算的建议?如果有任何帮助,我们将不胜感激。

使用您当前的方法获取完整的天数,然后从开始和结束减去时间。无法理解您的表是什么样子,以及您试图如何处理这些数据。@Vatev:您能描述一个您想要的函数吗ULD用于从结束日期和开始日期减去时间?当然要确定“工作日”,你需要考虑场所吗?不只是公众假期,你似乎根本没有考虑过,但是对于那些有不同的“周末”的国家(例如星期五星期六在许多中东国家,但是其他的变化)。。请明确说明您正试图解决的问题。这是一个复杂的问题,最好在应用程序库中解决。我在Perl中使用Date::Manip,它处理得很好:。如果您绝对必须在MySQL中执行此操作,则最好使用UDF来执行,但我建议您在应用程序中执行此操作。