3

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

如果我写这个:

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;
4

1 回答 1

7

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

您可以利用 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;
于 2013-01-28T02:29:03.297 回答