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')) === true
和 isNaN(Date.parse('2012-12-06T12:15:00')) === false
。 T
在某些应用程序中似乎确实有所作为。
@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 是不是会自动重新格式化插入到 DATETIME 类型列中的日期?
将Twitter API Datetime转换为MySQL Datetime格式