MySQL DATETIME 格式的“正式”名称是啥?

Posted

技术标签:

【中文标题】MySQL DATETIME 格式的“正式”名称是啥?【英文标题】:What is the "formal" name of MySQL's DATETIME format?MySQL DATETIME 格式的“正式”名称是什么? 【发布时间】:2012-11-24 15:18:08 【问题描述】:

有人知道 mysql DATETIME 使用的YYYY-MM-DD HH:MM:SS 日期格式的正式名称吗?有吗?它看起来接近 ISO 8601,但如果您尝试互换使用这两者,它的差异足以在大多数应用程序中中断。

有时我发现自己需要在对话中引用这种特定格式,但将其称为“DATETIME 格式”总是会让那些没有对数据库做太多工作的人产生空白。我习惯了具有正式名称和极其正式定义的日期格式。 (RFC 2822,有人吗?)那么,存在吗?

【问题讨论】:

我还以为的ISO格式。与 ISO 格式有什么区别? 很接近,但 ISO 有一个 T 分隔日期和时间组件,而不是空格字符。 ISO 定义指出,如果不会有歧义,可以省略T(至少***是这么说的) 也许吧。但作为一个实际示例,Firefox 17 中的 javascript Date 对象:isNaN(Date.parse('2012-12-06 12:15:00')) === trueisNaN(Date.parse('2012-12-06T12:15:00')) === falseT 在某些应用程序中似乎确实有所作为。 @smitelli ISO 标准非常广泛,涵盖了许多变化。遗憾的是它不开放供任何人阅读。 Javascript 支持一个非常严格的子集。 【参考方案1】:

2021

Olaf Dietsche 的回答是正确的,但过时 (2012) 并且截至 2021 年略有不准确。根据Wikipedia ISO 8601:

从 ISO 8601-1:2019 开始,基本格式为 T[hh][mm][ss],而 扩展格式为 T[hh]:[mm]:[ss]。 早期版本省略了 T (表示时间)两种格式。

同样来自同一链接:

ISO 8601-1:2019 允许在扩展格式中省略 T,如 在“13:47:30”中,但只允许在基本格式中省略 T 当日期表达式不存在歧义时。


MySQL 在他们的文档中提到了“ISO”(没有编号),在 one link 他们确实提到了 ISO format refers to ISO 9075, not ISO 8601.

ISO 9075 基本上是 MySQL 标准。

顺便说一句,ISO 8601 和 RFC 3339 几乎是一回事(从开发人员的角度来看)。如果你有兴趣,read。


底线:

MySQL 日期时间格式匹配格式与 ISO-8601 / RFC-3339 相同,尽管 MySQL 有自己的标准ISO 9075。因此,对于 MySQL 日期时间格式,我们可以将其称为以下 any

ISO 8601 又名 RFC 3339 MySQL 格式 又名 ISO 9075

【讨论】:

【参考方案2】:

MySQL 的Date and Time Literals 在参考手册中有描述。 AFAICS,没有提到 ISO 或任何其他名称。

Wikipedia, ISO 8601 显示 ISO 组合日期和时间格式,即“2012-12-04T20:03”(“YYYY-MM-DDTHH:MM”),与上述 MySQL 日期时间格式不同。

因此,虽然它看起来大致类似于 ISO 日期时间,但我将其称为 MySQL 或 SQL 格式。

【讨论】:

以上是关于MySQL DATETIME 格式的“正式”名称是啥?的主要内容,如果未能解决你的问题,请参考以下文章

mysql 计算两个日期的时间差函数小时分钟格式

MySQL 是不是会自动重新格式化插入到 DATETIME 类型列中的日期?

将Twitter API Datetime转换为MySQL Datetime格式

如何在 mySQL 的 api 调用中格式化 DATETIME 格式?

mysql中将datetime转换为int格式

Mysql中的DATE和DATETIME有啥区别?