【发布时间】:2018-07-13 09:51:59
【问题描述】:
我试图从另一列中减去一列,然后对结果求和。但是,无论我更改什么,我都会不断收到标题中提到的两个错误之一。
从发布的所有其他问题中,我得出我的陈述应该是这样的:
SELECT SUM(EndTime-BeginTime) AS TotalTime FROM TimeRegister
WHERE OrderNumber = 00000 AND Activity = 11111;
根据另一个主题的建议,我将声明更改为:
SELECT SUM(CONVERT(varchar(EndTime-BeginTime), 108)) AS TotalTime FROM TimeRegister
WHERE OrderNumber = 00000 AND Activity = 11111;
但是,我仍然收到错误消息。 时间存储如下:
1-1-1900 7:30:00
感谢您的任何建议...
编辑 1: 哦,我在 Excel 中通过 ODBC for SQL 使用 Microsoft Query,有点像: Excel vlookup incorporating SQL table
编辑 2: 我更喜欢以 HH:MM 格式再次输出。
问题是,当我将完整的数据库复制到 Excel 时,一切正常。我可以减去列并总结。我只是不想每天手动操作....
我刚查了SQL数据库,该列是日期/时间类型的。
【问题讨论】:
-
如果列是日期数据类型(应该如此),您可以使用
DATEDIFF() -
问题是您首先将日期转换为文本。无论其他主题是什么,如果它建议将日期转换为文本可以解决任何问题,那就错了。你期望得到什么输出?分钟?秒?
time值? -
在生成 SUM(DATEDIFF(MINUTE,__converted_EndTime,__converted_BeginTime))之前尝试在日期时间中转换每一列
-
@SnakeFoot 你假设 OP 想要几分钟。这可能是一个不错的猜测。
-
第一个查询是有效的标准 SQL。您使用的是哪种 DBMS 产品? “SQL”只是一种查询语言——每个关系数据库都是一个“SQL 数据库”
标签: sql sql-server datetime sum intervals