Firebird将整数转换为时间或日期

时间:2013-01-28 02:03:10

标签: sql firebird firebird2.5

我有一个表,它以秒为整数存储秒数。 我想显示它并将其用作时间或日期。

如果我写这个:

Select Cast(ColAmountofSeconds as Time) as ThisTime From MyTable;

同样:

Select Cast(ColAmountofSeconds as Date) as ThisTime From MyTable;

我收到以下错误:

  

数据类型转换期间发生溢出。转换错误来自   字符串“14”。

注意“14”是ColAmountofSeconds列中第一行的值。

这在SQL Server中非常自然,我无法相信我花费了大量时间来解决这个问题。

修改

我无法相信这就是答案:

Update MyTable
Set TIMESPENT =  time '00:00:00' + ColAmountOfSeconds;

1 个答案:

答案 0 :(得分:7)

Firebird cast function不支持将数值转换为日期,时间或时间戳。

您可以利用Firebird在日期和数值之间支持算术的事实,因此您可以像这样编写查询:

select dateadd(second, ColAmountOfSeconds, cast('00:00:00' as time))
  from myTable;

--or the equivalent:

select cast(cast('2013-01-01' as timestamp) + cast(ColAmountofSeconds as double precision) / 86400 as TIME)
  from myTable;