两次之间的分钟时差

时间:2014-05-16 14:33:51

标签: sql sql-server sql-server-2008-r2 ssrs-2008

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

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

我收到错误:从字符串

转换日期和/或时间时转换失败

我已经尝试过铸造 59:59'到时间类型' AS TIME'但得到类似的错误。我试过声明一个变量,但SSRS不允许它。我尝试的一切都给出了类似的错误。时间23:59:59将始终相同,但_Travel.Start_Time将是DB中该字段中的任何内容。 _Travel.Start_Time的输出格式为00:00:00

任何想法如何在23:59:59和db值之间的分钟内获得差异? TA

补充道:

CAN&C认识它。 _Travel.Start_Time是VARCHAR而不是TIME。现在已经尝试了

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

但仍然得到同样的错误。但是,注意到_Travel.Start_Time字段中有空/空字段

1 个答案:

答案 0 :(得分:0)

除非SSRS是问题或_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