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。请提供给定数据集的所需结果,请参阅