Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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_Datetime_Datediff_Dateadd - Fatal编程技术网

Mysql 我想要有条件的两个日期之间的时差

Mysql 我想要有条件的两个日期之间的时差,mysql,datetime,datediff,dateadd,Mysql,Datetime,Datediff,Dateadd,我有以下数据 | App | Created date | Completed Date | | x1 | 2021-06-01 19:49:36| 2021-06-02 08:09:55| | x2 | 2021-06-01 01:22:20| 2021-06-01 07:48:41| | x3 | 2021-06-01 05:54:02| 2021-06-01 08:44:50| 条件如下 我希望数据只在工作时间计算,从早上7点开始,到午夜12点结束 如果数据创建时间不在

我有以下数据

| App |  Created date  |    Completed Date |
| x1 |  2021-06-01 19:49:36|  2021-06-02 08:09:55|
| x2 | 2021-06-01 01:22:20|  2021-06-01 07:48:41|
| x3 | 2021-06-01 05:54:02|  2021-06-01 08:44:50|
条件如下

我希望数据只在工作时间计算,从早上7点开始,到午夜12点结束 如果数据创建时间不在此范围内,则开始时间应为上午7点。 也不应该计算周末。下面是我以前使用的查询,但它没有给我所需的答案

   CASE
   WHEN 
   MAX(CONVERT(varchar,Created,101)) = 
   MAX(CONVERT(varchar,Completed,101))
   THEN DATEDIFF(MI,MAX(Created),MAX(Completed))
   ELSE 
   CASE 
   WHEN DATEPART(HH,MAX(Created)) < @businessCloseHour 
   THEN DATEDIFF(MI,MAX(Created),MAX(CONVERT(varchar,Created,101)) + ' ' + (CAST(@businessCloseHour AS varchar(2)) + ':00')) 
  ELSE 
  0 
  END 
  +DATEDIFF(DAY,DATEADD(DAY,1,MAX(CONVERT(varchar,Created,101))),MAX(CONVERT(varchar,Completed,101))) * (9*60) +
  DATEDIFF(MI,MAX(CONVERT(varchar,Completed,101)) + ' ' + (CAST(@businessStartHour AS varchar(2)) + ':00'),MAX(Completed))
  END,
案例
什么时候
最大值(转换(varchar,已创建,101))=
最大值(转换(varchar,已完成,101))
然后是DATEDIFF(MI、MAX(已创建)、MAX(已完成))
其他的
案例
当DATEPART(HH,MAX(已创建))<@businessCloseHour
然后是DATEDIFF(MI,MAX(Created),MAX(CONVERT(varchar,Created,101))+''+(CAST(@businessCloseHour作为varchar(2))+':00'))
其他的
0
结束
+DATEDIFF(DAY,DATEADD(DAY,1,MAX(CONVERT(varchar,Created,101))),MAX(CONVERT(varchar,Completed,101)))*(9*60)+
DATEDIFF(MI,MAX(CONVERT(varchar,Completed,101))+''+(CAST(@businessStartHour AS varchar(2))+':00'),MAX(Completed))
完,,

欢迎来到SO。请提供给定数据集的所需结果,请参阅