【问题标题】:Regional setting confusion regarding date format from PostgreSQL关于 PostgreSQL 日期格式的区域设置混淆
【发布时间】:2011-12-08 12:27:43
【问题描述】:

我正在开发一个需要以下区域设置(Delphi 7 和 PostgreSQL 9.0)的应用程序:

   1. DateSeparator:='/';
   2. TimeSeparator:=':';
   3. ThousandSeparator:=',';
   4. DecimalSeparator:='.';
   5. ShortDateFormat:='MM/dd/yy';
   6. ShortTimeFormat:='hh:mm:ss';

我只需要为我的应用程序而不是系统范围更改区域设置。

在表单的 OnCreate 中,我设置了上述分隔符,并且 我当前的系统分隔符是:

   1. DateSeparator='|';
   2. TimeSeparator='|';
   3. ThousandSeparator='|';
   4. DecimalSeparator='|';

(这是为了测试目的。)

现在在 Postgres 中,我有一个表格,我可以从中获取日期以显示在我的应用程序中,但不知何故,日期分隔符似乎不起作用(如 label1 所示)!

检查图像。

我触发查询以从表中获取日期

                    Label1.Caption:=(Fields(1).Text);
                    Label2.Caption:=datetostr(Fields(1).Data) ;

查询是

 select min(dat), max(dat) from diary where survey in (2008401) and event not in ('E','C','R') and region=6100;

如果我认为 .data 与 .text 日期分隔符的日期分隔符不同,则现在是相同的日期 为什么会这样?

为什么区域设置没有应用于label1.caption(如图所示)?

【问题讨论】:

    标签: delphi postgresql delphi-7 regional-settings


    【解决方案1】:

    DateToStr 使用ShortDateFormat 作为输出格式。您没有从最初的 MM/dd/yy 设置中更改它;你只改变了DateSeparator

    但我很困惑,为什么要使用 (Fields(1).Text)(对吗?字段下标用括号而不是 []?)。

    如果数据库配置为使用| 作为日期分隔符,就像它在您的屏幕图像中显示的那样,您为什么要使用DateToStr.Text 似乎正在以您希望获取的格式获取信息。

    【讨论】:

    • 嘿,我想知道为什么日期分隔符对 label1.caption 和 label2.caption 有不同的影响?

      我想要的日期分隔符是 '/' 而不是 '| '..
    • 我回答了这个问题。 DateToStr 使用 ShortDateFormat,您没有更改。请再次阅读我的答案 - 效果不同,因为您使用了两种不同的方式来处理这些值。您需要将两种方式(ShortDateFormatDateSeparator)设置为兼容,或者只使用其中一种方式并保持一致。我不知道您还在这里寻找什么。
    • 感谢您的快速回复:)
      这是我在标签标题中显示的代码
      DateSeparator:='/'; ShortDateFormat:='MM/dd/yy'; label1.caption:=Fields(1).Text
      结果是 03|18|08
      但我希望它是 03/18/08
    【解决方案2】:

    好的,我在一个网站上找到了 enter link description here 为了获得适当的格式,我所要做的就是将查询设为

    select to_char(min(dat),'mm/dd/yy'), to_char(min(dat),'mm/dd/yy') from diary where survey in (2008401) and event not in ('E','C','R') and region=6100;

    这给了我想要的格式的正确结果

    【讨论】:

    • +1 很高兴看到您解决了问题,感谢您为以后遇到同样问题的其他人发布解决方案。 :)
    猜你喜欢
    • 2011-01-22
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 2014-12-23
    • 2022-01-12
    相关资源
    最近更新 更多