V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tctc4869
V2EX  ›  PostgreSQL

postgresql 的日期字段数据转成字符串,能不能设置日期默认转换字符串的格式?

  •  
  •   tctc4869 · 110 天前 · 576 次点击
    这是一个创建于 110 天前的主题,其中的信息可能已经有所发展或是发生改变。

    postgresql 数据类型中,其中的三个日期类型,timestamp,date,time,这三个转成字符串,也就是格式化的时候,不指定转换格式。

    Dbeaver 连接 pg 查询的结果集

    查询会发生下面几种情况 timestamp 例:不加字符串转换结果:2021-08-18 16:09:56,加了字符串转换结果:2021-08-18 T16:09:56.256121

    time 例:不加字符串转换结果:16:09:56,加了字符串转换结果:16:09:56.256121

    date 的显示还算正常。

    那能不能设置查询 timestamp 和 time 类型的列的结果集内容的默认格式化类型的配置

    比如 timestamp 例:2021-08-18 16:09:56,默认格式化结果集格式为:2021-08-18 16:09

    time 例:16:09:56,默认格式化结果集格式为:16:09

    一种方式是给日期列的结果集内容加格式化函数,但这样每遇到一个日期字段,为了按照自己的要求显示指定日期格式,都得手动添加,这样会很麻烦

    5 条回复    2021-08-26 15:12:45 +08:00
    moen
        1
    moen  
       110 天前
    这个可以修改 DBeaver 的格式化设置,就是如果要针对不同的连接只能手动切换 profile
    tctc4869
        2
    tctc4869  
    OP
       110 天前
    @moen 好吧,我补充一下,DBeaver 我只是用来操作方便显示的,我说的是通过编程语言的数据库驱动读取数据库,查询数据表结果集,

    如果结果集有日期字段。不手动指定 to_char,比如读到 timestamp 类型的列,使用 timestamp||''这个操作,或者是使用 row_to_json,日期时间数据,会出现“T“字符,时间部分还会出现毫秒。
    tctc4869
        3
    tctc4869  
    OP
       110 天前
    @moen 另外一种方式是改编程语言那边的代码,实现对查询语句做封装,对每个日期字段,其结果集的列都添加 to_char 函数。

    但如果这样做的工作量就大了,相当于做 orm 了,所以因此而改动编程语言项目方面的操作就不用考虑了
    tctc4869
        4
    tctc4869  
    OP
       110 天前
    这到底要怎么解决啊 ,查询有关 time,timestamp 列的结果集找不到默认转字符串格式化输出方法,这样的话,连前端的日期选择器组件都会收到影响。

    除了对查询结果集,日期字段一个一个手动写 to_char 么。这很麻烦啊。
    dzdh
        5
    dzdh  
       104 天前
    设置字段的存储格式啊
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2890 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 01:04 · PVG 09:04 · LAX 17:04 · JFK 20:04
    ♥ Do have faith in what you're doing.