【问题标题】:Date and number formatting日期和数字格式
【发布时间】:2014-10-23 17:10:59
【问题描述】:

我知道有一些日期/时间和数字格式的功能,但有没有办法以自定义格式存储和读取日期和数字列?

例如:

在我的国家 DD/MM/YYYY 是一种常见的日期格式,但如果我想将其存储在 mysqlpostgres 数据库中我必须将其存储为 YYYY-MM-DD

我已经阅读了 postgresql 中的一些配置指令,这些指令允许以特定格式存储日期/数字。

我认为在不需要转换例程的情况下存储和读取这些值会快得多。

【问题讨论】:

  • 您实际使用的是什么 RDMS? MySQL 还是 PostgreSQL?
  • 两者。它是我刚开始的一个多数据库项目......
  • 请在您的应用程序的外边缘处理此问题。如果您始终使用合理的 ISO 8601 格式与数据库对话,您将拥有更好的时间。时间和日期处理足够复杂,无需将模棱两可和特定于语言环境的格式混杂在一起。
  • "允许以特定格式存储日期/数字" - 日期确实具有“格式”。定义为DATE 的列以二进制方式存储日期值(例如,数值)。附有 NO “格式”。您为这些列看到的任何格式都由显示这些列中的数据的应用程序(例如 SQL 客户端)应用。将日期存储在定义为 DATE 的列中,并在应用程序中进行格式化(或使用 to_char() 在 SQL 语句中应用格式)。

标签: mysql postgresql date datetime number-formatting


【解决方案1】:

我强烈建议不要更改日期格式,但如果您想这样做,它是一个全局变量。这是 MySQL 的示例。

mysql> show global variables like '%date%';
+-----------------------------------------+-------------------+
| Variable_name                           | Value             |
+-----------------------------------------+-------------------+
| binlog_direct_non_transactional_updates | OFF               |
| date_format                             | %Y-%m-%d          |
| datetime_format                         | %Y-%m-%d %H:%i:%s |
| log_slave_updates                       | OFF               |
| low_priority_updates                    | OFF               |
| query_cache_wlock_invalidate            | OFF               |
| sql_safe_updates                        | OFF               |
+-----------------------------------------+-------------------+
7 rows in set (0.00 sec)

因此您需要将 date_format 和 datetime_format 设置为所需的格式。即

这是给服务器的

set global variable date_format = '%d-%m-%Y'; 
set global variable datetime_format = '%d-%m-%Y %H:%i:%s';

这是在客户端

set date_format = '%d-%m-%Y'; 
set datetime_format = '%d-%m-%Y %H:%i:%s';

【讨论】:

  • 嗨。感谢您的回答。为什么你会说你“强烈推荐”改变这些变量?
  • 我不希望每个开发人员都编写代码来检查其应用程序中的日期格式,因此如果您自己编写代码,那么如果您正在使用第三方应用程序,您可能会没事你可能会得到不想要的结果。坚持系统标准通常是最安全的。
【解决方案2】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多