timestamp - 如何更新 firebird 时间戳字段以删除毫秒部分?

标签 timestamp firebird

我可以执行一个简单的更新语句来更新 firebird 数据库中的时间戳字段以删除毫秒部分。

所以当前值是:9-DEC-2013 8:55:57.3560
我想将其更新为:9-DEC-2013 8:55:57.0000

我需要一个基于旧时间戳计算新时间戳的通用更新语句。

最佳答案

Firebird 中没有标准功能可以做到这一点。但是在内置函数的帮助下 EXTRACT DATEADD 你将能够构建这个。

DATEADD(-1 * EXTRACT(MILLISECOND FROM theTimestamp) MILLISECOND TO theTimestamp)
此解决方案的唯一问题是,如果您的时间戳有 100 微秒部分,它就无法正常工作,如 DATEADD 的文档所示。状态:

<amount> ::= an integer expression (negative to subtract)


而 100 微秒部分是数量的小数部分,不能这样更改。我已提交工单 CORE-4457改变这一点,从 Firebird 3 开始,DATEADD(... MILLISECOND TO ...)现在将接受一个小数值。
然而,由于许多客户端库仅使用或支持毫秒精度,这可能不会影响您(即使内置的 CURRENT_TIMECURRENT_TIMESTAMP 也仅限于毫秒精度)。

关于timestamp - 如何更新 firebird 时间戳字段以删除毫秒部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24118608/

相关文章:

firebird - 如何为 Firebird 数据库创建用户

c - 在从 Linux 套接字发送/接收数据包后访问辅助数据时,在哪些情况下 msg_controllen 可以为 0?

c# - 在 WCF 服务中托管 FireBirdSql 时出现 AccessViolationException

variables - Firebird 2.5 中无法声明变量,为什么?

sql - sql存储函数给出错误

python - 仅参数作为值的 case 表达式中的数据类型未知

php - 在 PHP 5.3 中定义时间戳的新方法?

r - 在 R 中将 unix 时间戳列转换为星期几

python - 用Python解析模糊时间戳

mysql - SQL查询按时间戳的月份部分分组