sql - SQL DATEDIFF 结果在几小时内与 Excel 不同
问题描述
一直在努力寻找解决此问题的方法。
我们正在远离 Excel,并通过减去两个日期在几小时内将计算添加到 SQL 中。
问题是我们在 excel 中的结果与 SQL 不同。
这是我们在 excel 中的内容:
Change Date: 30/10/2018
Change Time: 10:53
Service Date: 29/10/2018
Service Time: 9:37
The Formula in excel is: =((Change Date+Change Time)-(Service Date+Service Time))*24
小时分数的结果是:25.26666667
使用 DATEDIFF 导入 SQL 的相同数据(语法如下):
datediff(second,CAST(CAST(CONVERT(DATETIME,Service_Date,103) as smalldatetime)
+ CAST(CONVERT(DATETIME,Service_Time,103) as smalldatetime) as smalldatetime),
CAST(CAST(CONVERT(DATETIME,Change_Date,103) as smalldatetime)
+ CAST(CONVERT(DATETIME,Change_Time,103) as smalldatetime) as smalldatetime)) /3600.0
给出结果:26.350000
有谁知道如何解决这种差异?
提前致谢,
朱莉安娜
解决方案
检查您的输入。您的逻辑是正确的,尽管可以简化。为了清楚起见,在 SSMS 中运行下面的代码示例。
declare @Service_Date varchar(max) = '30/10/2018'
declare @Service_Time varchar(max) = '10:53'
declare @Change_Date varchar(max) = '29/10/2018'
declare @Change_Time varchar(max) = '9:37'
--
-- Original
--
select datediff(second,CAST(CAST(CONVERT(DATETIME,@Service_Date,103) as smalldatetime)
+ CAST(CONVERT(DATETIME,@Service_Time,103) as smalldatetime) as smalldatetime),
CAST(CAST(CONVERT(DATETIME,@Change_Date,103) as smalldatetime)
+ CAST(CONVERT(DATETIME,@Change_Time,103) as smalldatetime) as smalldatetime)) /3600.0
--
-- Simplified - same result
--
select datediff(second,
(CONVERT(smalldatetime,@Service_Date,103) + CONVERT(smalldatetime,@Service_Time,103)),
(CONVERT(smalldatetime,@Change_Date,103) + CONVERT(smalldatetime,@Change_Time,103))) /3600.0
--
-- Simplfied - shows error is with inpuyts, not logic
--
set @Service_Time = '11:57'
set @Change_Time = '9:36'
select datediff(second,
(CONVERT(smalldatetime,@Service_Date,103) + CONVERT(smalldatetime,@Service_Time,103)),
(CONVERT(smalldatetime,@Change_Date,103) + CONVERT(smalldatetime,@Change_Time,103))) /3600.0
推荐阅读
- reactjs - @risingstack/react-easy-state:任务不是函数
- css - 三元运算符显示所有处于活动状态的按钮,而不仅仅是当前按钮。我该如何解决?
- java - 如何使用 java.util.concurrent.TimeUnit;在 jdk 1.4 中?
- python - Python没有设置环境变量
- python - 使用 Flask 无法在网站上呈现图像
- javascript - 随机方法返回相同的对象
- c# - 仅当项目包含字符串时才将项目添加到组合框
- mysql - Django 无法连接 MySQL 但 MySQL 服务器正常工作
- c++ - 解决非静态成员函数的无效使用
- javascript - 方法未定义js