You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Firebird数据库中将日期时间格式化为ISO8601标准?

如何在Firebird中将日期时间格式化为ISO 8601标准?

嘿,正好我之前也碰到过Firebird里这个需求!确实它没有直接输出yyyy-MM-ddTHH:mm:ss.fffff这种带五位微秒的ISO 8601格式的内置函数,不过咱们可以自己动手实现,两种实用方法分享给你:

方法一:创建自定义PSQL函数(推荐复用场景)

如果需要多次使用这个格式转换,最好创建一个可复用的自定义函数。下面是亲测有效的函数代码:

CREATE OR ALTER FUNCTION TO_ISO8601(ts TIMESTAMP)
RETURNS VARCHAR(23)
AS
BEGIN
    RETURN 
        -- 拼接日期部分,确保单数字补零
        LPAD(CAST(EXTRACT(YEAR FROM ts) AS VARCHAR), 4, '0') || '-' ||
        LPAD(CAST(EXTRACT(MONTH FROM ts) AS VARCHAR), 2, '0') || '-' ||
        LPAD(CAST(EXTRACT(DAY FROM ts) AS VARCHAR), 2, '0') || 'T' ||
        -- 拼接时间部分
        LPAD(CAST(EXTRACT(HOUR FROM ts) AS VARCHAR), 2, '0') || ':' ||
        LPAD(CAST(EXTRACT(MINUTE FROM ts) AS VARCHAR), 2, '0') || ':' ||
        LPAD(CAST(EXTRACT(SECOND FROM ts) AS VARCHAR), 2, '0') || '.' ||
        -- 取五位微秒(Firebird的TIMESTAMP是6位精度,这里除以10取整)
        LPAD(CAST(TRUNC(EXTRACT(MICROSECOND FROM ts)/10) AS VARCHAR), 5, '0');
END;

创建好之后,直接调用就行:

SELECT TO_ISO8601(CURRENT_TIMESTAMP) FROM RDB$DATABASE;

方法二:直接在查询中拼接(适合临时场景)

如果只是偶尔用一次,不想创建函数,直接在查询里拼接字段就行,逻辑和上面的函数一致:

SELECT
    LPAD(CAST(EXTRACT(YEAR FROM your_timestamp_column) AS VARCHAR), 4, '0') || '-' ||
    LPAD(CAST(EXTRACT(MONTH FROM your_timestamp_column) AS VARCHAR), 2, '0') || '-' ||
    LPAD(CAST(EXTRACT(DAY FROM your_timestamp_column) AS VARCHAR), 2, '0') || 'T' ||
    LPAD(CAST(EXTRACT(HOUR FROM your_timestamp_column) AS VARCHAR), 2, '0') || ':' ||
    LPAD(CAST(EXTRACT(MINUTE FROM your_timestamp_column) AS VARCHAR), 2, '0') || ':' ||
    LPAD(CAST(EXTRACT(SECOND FROM your_timestamp_column) AS VARCHAR), 2, '0') || '.' ||
    LPAD(CAST(TRUNC(EXTRACT(MICROSECOND FROM your_timestamp_column)/10) AS VARCHAR), 5, '0') AS iso_8601_datetime
FROM your_table;

小提醒

Firebird的TIMESTAMP类型本身支持微秒级精度(6位),这里我们取前五位是为了匹配你要的fffff格式;如果需要6位微秒的ISO格式,把微秒部分的TRUNC(EXTRACT(...)/10)改成EXTRACT(MICROSECOND FROM ts)就行,同时把返回的VARCHAR长度调整为24。

内容的提问来源于stack exchange,提问作者Tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:57:27