日期和数字格式
Posted
技术标签:
【中文标题】日期和数字格式【英文标题】:Date and number formatting 【发布时间】:2014-10-23 17:10:59 【问题描述】:我知道有一些日期/时间和数字格式的功能,但有没有办法以自定义格式存储和读取日期和数字列?
例如:
在我的国家 DD/MM/YYYY 是一种常见的日期格式,但如果我想将其存储在 mysql 或 postgres 数据库中我必须将其存储为 YYYY-MM-DD。
我已经阅读了 postgresql 中的一些配置指令,这些指令允许以特定格式存储日期/数字。
我认为在不需要转换例程的情况下存储和读取这些值会快得多。
【问题讨论】:
您实际使用的是什么 RDMS? MySQL 还是 PostgreSQL? 两者。它是我刚开始的一个多数据库项目...... 请在您的应用程序的外边缘处理此问题。如果您始终使用合理的 ISO 8601 格式与数据库对话,您将拥有更好的时间。时间和日期处理足够复杂,无需将模棱两可和特定于语言环境的格式混杂在一起。 "允许以特定格式存储日期/数字" - 日期确实不具有“格式”。定义为DATE
的列以二进制方式存储日期值(例如,数值)。附有 NO “格式”。您为这些列看到的任何格式都由显示这些列中的数据的应用程序(例如 SQL 客户端)应用。将日期存储在定义为 DATE
的列中,并在应用程序中进行格式化(或使用 to_char()
在 SQL 语句中应用格式)。
【参考方案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】:也许这个链接会对你有所帮助:
How do I alter the date format in Postgres?
或者这个:
How to convert date strings to timestamp without knowing the date format
【讨论】:
以上是关于日期和数字格式的主要内容,如果未能解决你的问题,请参考以下文章