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

如何将混合字段类型列l_st、new_val_name的日期格式改为dd.MM.yyyy HH:MM?

解决方案:调整日期格式为dd.MM.yyyy HH:MM

由于不同数据库的日期格式化语法存在差异,以下针对主流数据库提供适配方案:

Oracle数据库

如果new_val_name是字符串类型,先通过TO_DATE转换为日期,再用TO_CHAR格式化;若字段本身已是DATE类型,可直接使用TO_CHAR:

WITH t1 AS (
SELECT obj_name ,
          attr_name ,
          TO_CHAR(LAG(TO_DATE(new_val_name, '原日期格式')) OVER (PARTITION BY attr_name ORDER BY stamp), 'dd.MM.yyyy HH24:MI') l_st ,
          TO_CHAR(TO_DATE(new_val_name, '原日期格式'), 'dd.MM.yyyy HH24:MI') new_val_name ,
          employee_name,
          stamp
FROM SYS_AU_CHANGE_TYPE_ATTR change
WHERE OBJ_ID = :IDEC)

SELECT obj_name,
          attr_name,
          l_st,
          new_val_name,
          employee_name,
          stamp
FROM t1 
ORDER BY stamp DESC

提示:将原日期格式替换为new_val_name当前的日期格式(例如yyyy-MM-dd HH24:MI:SS);若字段本身是DATE类型,去掉TO_DATE(new_val_name, '原日期格式')部分,直接写new_val_name。

MySQL/MariaDB

使用STR_TO_DATE转换字符串为日期,再通过DATE_FORMAT格式化;若字段是DATETIME类型,直接用DATE_FORMAT:

WITH t1 AS (
SELECT obj_name ,
          attr_name ,
          DATE_FORMAT(LAG(STR_TO_DATE(new_val_name, '原日期格式')) OVER (PARTITION BY attr_name ORDER BY stamp), '%d.%m.%Y %H:%i') l_st ,
          DATE_FORMAT(STR_TO_DATE(new_val_name, '原日期格式'), '%d.%m.%Y %H:%i') new_val_name ,
          employee_name,
          stamp
FROM SYS_AU_CHANGE_TYPE_ATTR change
WHERE OBJ_ID = :IDEC)

SELECT obj_name,
          attr_name,
          l_st,
          new_val_name,
          employee_name,
          stamp
FROM t1 
ORDER BY stamp DESC

提示:替换原日期格式为当前字段的日期格式(例如%Y-%m-%d %H:%i:%s);若字段是DATETIME类型,去掉STR_TO_DATE(new_val_name, '原日期格式')部分。

PostgreSQL

用TO_TIMESTAMP转换字符串为时间戳,再通过TO_CHAR格式化;若字段是TIMESTAMP类型,直接用TO_CHAR:

WITH t1 AS (
SELECT obj_name ,
          attr_name ,
          TO_CHAR(LAG(TO_TIMESTAMP(new_val_name, '原日期格式')) OVER (PARTITION BY attr_name ORDER BY stamp), 'DD.MM.YYYY HH24:MI') l_st ,
          TO_CHAR(TO_TIMESTAMP(new_val_name, '原日期格式'), 'DD.MM.YYYY HH24:MI') new_val_name ,
          employee_name,
          stamp
FROM SYS_AU_CHANGE_TYPE_ATTR change
WHERE OBJ_ID = :IDEC)

SELECT obj_name,
          attr_name,
          l_st,
          new_val_name,
          employee_name,
          stamp
FROM t1 
ORDER BY stamp DESC

提示:将原日期格式替换为当前字段的日期格式(例如YYYY-MM-DD HH24:MI:SS);若字段是TIMESTAMP类型,去掉TO_TIMESTAMP(new_val_name, '原日期格式')部分。

注意事项

  • 分组中第一条数据的l_st会为NULL,格式化后仍保持NULL,不影响报表展示;
  • 必须确保替换的原日期格式与new_val_name字段实际存储的格式完全匹配,否则会出现转换错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 09:10:09