斯潘8
斯潘4
我正在使用日期差异计算器计算完成日期(包含日期和时间)与现在之间的天数差异。这是为了查明完成日期是否在过去30天内。我现在已经使用datediff函数将其转换为SQL查询:select datediff(day,完成日期,当前时间戳)来自…
SQL函数向日期差异计算器返回不同的结果,通常少于1天。例如,日期差异计算器表示今天(9月14日)与8月17日的完成日期之间的差异为29,但是SQL Server(和Excel)说28。确切地说,完成日期为2018年8月17日00:32:00,对比时间约为2018年9月14日17:20:00。excel给出的差为28.7,我会四舍五入到28,因为还没有29天。
看看嵌入式变压器,如果小数点值大于或等于.5,则显示DateDifferenceCalculator正在对输出值进行取整。SQL Server datediff函数有点复杂,因为正如这个stackoverflow主题所说,“datediff使用日期部分的边界。所以对于“天”,今天23:59是明天00:01之前的一天。
https://stackoverflow.com/questions/5131958/datediff-rounding
例如:
选择日期差异(天,'2018-09-14 23:59:00','2018-09-15 00:01:00')
= 1
为了得到更精确的值,你得有时间,然后除以24:
选择(转换(数字(10,3),DATEDIFF(小时,'2018-09-14 23:59:00','2018-09-15 00:01:00')/24
=0.04166,然后您可以根据自己的情况进行旋转。
对于这个比较,DateDifferenceCaluator返回零,我同意。
所以这两种方法似乎都不完美。有什么想法吗?
关于你所看到的…
日期差异计算器是一个较旧的变压器,可通过FME Hub从FME Workbench 2017.0或更早版本获得。(您可以在画布上键入“日期差异计算器”,它将自动下载。)从FME 2017.1起,尝试在以前没有使用过的系统上添加此转换器*将改为添加日期时间计算器(我们推荐的替代方案)。日期差异计算器将开始和结束日期/时间转换为“从epoch到1月1日午夜的秒,1970“除以每天86400秒,是的-把结果四舍五入。这会导致你看到的行为。
我的建议是…
从FME 2017.1开始,您可以使用新的日期时间计算器进行相同的计算。像Excel一样,你可以在几天内要求这个差额,它将返回28.7。
或者,如果你愿意,你可以只计算日期部分的差额,像SQL Server。要做到这一点,在日期时间计算器之前,把日期转换成日期,例如在attributeCreator中使用@datetimecast(@value(myattr),date)。日期差异.fmw
如果上述任何一项不清楚,请告诉我,我去看看。当做,保罗。
?2019安全亚搏在线软件公司|合法的