两次之间的时间差(分钟)

Posted

技术标签:

【中文标题】两次之间的时间差(分钟)【英文标题】:Time difference in minutes between two times 【发布时间】:2014-05-16 14:33:51 【问题描述】:

一直在努力获得 2 次之间的分钟差。一次来自 SQL Server 中数据类型 TIME 的字段。另一个值是添加到 SQL 查询的字符串。我在 s-s-rS 2008 R2 中运行它看起来像这样:

DATEDIFF(mi, CONVERT(TIME, '23:59:59'), _Travel.Start_Time) AS TIME_DIFFERENCE

我收到错误:从字符串转换日期和/或时间时转换失败

我尝试将“23:59:59”转换为 TIME 类型“AS TIME”,但出现类似错误。我试过声明一个变量,但 s-s-rS 不允许它。我尝试的一切都给出了类似的错误。时间 23:59:59 将始终相同,但 _Travel.Start_Time 将是 DB 中该字段中的任何内容。 _Travel.Start_Time 的输出格式为 00:00:00

有什么想法可以在 23:59:59 和 db 值之间以分钟为单位获得差异吗? 塔

添加:

不敢相信。 _Travel.Start_Time 是 VARCHAR 而不是 TIME。已经试过了

DATEDIFF(CONVERT(TIME, '23:59:59'), CONVERT(TIME, _Travel.Start_Time)) 

但仍然出现同样的错误。但是,已经注意到 _Travel.Start_Time 字段中有 nulls/empty 字段

【问题讨论】:

在我的机器上工作.. 也运行 2008 R2。我在 SSMS 中执行了查询。您确定 _Travel.Start_Time 是 TIME 数据类型吗? 有点不相关,但使用字符串时要小心:'23:59:59'。我看到人们像这样使用它:WHERE column > '2014-05-16' and column <= '2014-05-16 23:59:59' 请记住,您的时间可以大于23:59:59,但小于第二天,因为允许使用小数值,请考虑:'23:59:59.5 您的查询可能会出现这一行。我总是使用WHERE column > '2014-05-16' and column < '2014-05-17'。我发现将 1 天添加到结束日期并使用少于并忘记整个时间问题更容易。如果必须使用它,请改用:'23:59:59.997' 【参考方案1】:

我认为您所拥有的没有问题,除非s-s-rS 是问题或_Travel.Start_Time 不是TIME 类型。

看到这个:SQL Fiddle

示例 SQL:

-- Sample with trimming time portion off datetime
SELECT DATEDIFF(mi, CONVERT(TIME, '23:59:59'), 
       LTRIM(RIGHT(CONVERT(VARCHAR(20), GETDATE(), 100), 7))) AS TIME_DIFFERENCE

-- Sample with time conversion of datetime
SELECT  DATEDIFF(mi, CONVERT(TIME, '23:59:59'),
          CONVERT(TIME, GETDATE())) as TIME_DIFFERENCE

另外,你有没有试过转换db值:

SELECT DATEDIFF(mi, CONVERT(TIME, '23:59:59'), 
       CONVERT(TIME, _Travel.Start_Time)) AS TIME_DIFFERENCE

【讨论】:

不敢相信。 _Travel.Start_Time 是 VARCHAR。现在已经尝试过 CONVERT(TIME, '23:59:59'), CONVERT(TIME, _DatabaseSettings.Value)) 但仍然遇到同样的错误。 @user1022772 给我一个 varchar 格式的示例时间 17:30:00, 08:30:00。还有一些空值在考虑它 是列中的这个值还是2 抱歉,列中有一个值。这里只给出了两个输出示例

以上是关于两次之间的时间差(分钟)的主要内容,如果未能解决你的问题,请参考以下文章

两次之间的 Bash while 循环

在PHP中获取两次之间的时间差[重复]

在 SQL 中搜索两次之间的变量

SQL 两次之间的差异(以秒为单位)

SQL,在计算两次之间的差异时插入表

我如何使用 mysql 选择查询在“x 小时 y 分钟 z 秒”之类的词中获得 2 次之间的差异