8个回答
本帖最后由 wsn123 于 2022-6-16 15:09 编辑
公式是这个 上面那个错了 seconds(datetostr(NETWORKAVAILABILITY_ALARM.alram_close_time, 'yyyymmdd hh:mm:ss'),datetostr(NETWORKAVAILABILITY_ALARM.alarm_open_time, 'yyyymmdd hh:mm:ss'))
前两个表元为日期型,
求差时用
=SECONDS(GRID2.A1,GRID2.B1)
这样试试呢
颜值区总司令 发表于 2022-6-16 15:37
前两个表元为日期型,
求差时用
=SECONDS(GRID2.A1,GRID2.B1)
这样单独两列弄出来计算没问题,问题我我没法弄两列出来 我只在一个单元格算最后的总数
像下面这样写就有问题,计算都是0

这样写就没问题

计算的倒数第二列就是正常的 最后一列就是0
wsn123 发表于 2022-6-16 16:19
这样单独两列弄出来计算没问题,问题我我没法弄两列出来 我只在一个单元格算最后的总数
像下面这样写就有 ...
你倒数第一列函数里的两个参数都被datatostr转换为字符型了,SECONDS (D1,D2)中的参数D1,D2都应该是日期。日期格式。所以这种写法算不出来应该是正常的吧。
像倒数第二列这样写不行嘛,前面两列可以隐藏掉
颜值区总司令 发表于 2022-6-16 16:32
你倒数第一列函数里的两个参数都被datatostr转换为字符型了,SECONDS (D1,D2)中的参数D1,D2都应该是日期 ...
问题不是这么简单,我需要将open_time和时间组件@start_time作比较
实际的表达式是这种的
sum(if(NETWORKAVAILABILITY_ALARM.alram_close_time IS NOT NULL,(if(datetostr(NETWORKAVAILABILITY_ALARM.alarm_open_time, 'yyyymmdd')>@Start8,seconds(datetostr(NETWORKAVAILABILITY_ALARM.alram_close_time, 'yyyymmdd'),datetostr(NETWORKAVAILABILITY_ALARM.alarm_open_time , 'yyyymmdd')),seconds(datetostr(NETWORKAVAILABILITY_ALARM.alram_close_time, 'yyyymmdd'),@Start8))),(if(datetostr(NETWORKAVAILABILITY_ALARM.alarm_open_time, 'yyyymmdd')>@Start8,seconds(@End8,datetostr(NETWORKAVAILABILITY_ALARM.alarm_open_time, 'yyyymmdd')),seconds(@End8,@Start8)))))
@End8指的是时间组件结束时间 ,@Start8指的是时间组件开始时间
时间组件这个传参是字符串格式还是日期格式呢
wsn123 发表于 2022-6-16 16:42
问题不是这么简单,我需要将open_time和时间组件@start_time作比较
实际的表达式是这种的
sum(if(NETW ...
理解是日期格式
颜值区总司令 发表于 2022-6-16 16:50
理解是日期格式
能确认下吗,经常需要Mysql处理日期字段,不知道到底处理数据时要把时间字段处理为时间格式还是字符串格式,和这个日期组件作做过滤条件
wsn123 发表于 2022-6-17 17:14
能确认下吗,经常需要Mysql处理日期字段,不知道到底处理数据时要把时间字段处理为时间格式还是字符串格 ...
不好意思哈,询问了一下大佬,日期组件的参数值只是字符串