如何在 MySQL 中反转 EXTRACT() 的输出

Posted

技术标签:

【中文标题】如何在 MySQL 中反转 EXTRACT() 的输出【英文标题】:How to reverse the output of EXTRACT() in MySQL 【发布时间】:2022-01-12 00:30:56 【问题描述】:

我有以下疑问 -

SELECT NOW(6) AS output1, CONCAT(EXTRACT(YEAR_MONTH FROM NOW()), EXTRACT(DAY FROM NOW()), EXTRACT(HOUR_MICROSECOND FROM NOW(6))) AS output2;
+----------------------------+--------------------+
| output1                    | output2            |
+----------------------------+--------------------+
| 2021-12-07 02:06:28.783259 | 202112720628783259 |
+----------------------------+--------------------+

现在我想反转结果 - 2021127206287832592021-12-07 02:06:28.783259。但我想不出办法。

【问题讨论】:

【参考方案1】:

output2 中,日、时、分各有一位。因此,您无法可靠地将其解析回 YYYY-MM-DD HH:MM:SS。

我建议您改用DATE_FORMAT() 及其相反的STR_TO_DATE()。

SELECT NOW(6) AS output1, DATE_FORMAT(NOW(6), '%Y%m%d%H%i%s%f') as output2
+----------------------------+----------------------+
| output1                    | output2              |
+----------------------------+----------------------+
| 2021-12-06 20:44:31.927978 | 20211206204431927978 |
+----------------------------+----------------------+

【讨论】:

感谢您的回答,我知道这两个功能。我正在检查所有时间函数 - dev.mysql.com/doc/refman/8.0/en/… 几乎所有列出的函数都有一个反向函数,EXTRACT() 除外。所以我很好奇是否有任何方法可以逆转EXTRACT() 否,因为当某些日期时间组件有一位时,结果是不明确的。 感谢您的回复

以上是关于如何在 MySQL 中反转 EXTRACT() 的输出的主要内容,如果未能解决你的问题,请参考以下文章

where子句中的mysql udf json_extract - 如何提高性能

如何在 MySQL Workbench 中使用 REGEXP_SUBSTR 或 REGEXP_EXTRACT 以及托管在 Google Cloud SQL 上的数据库?

如何在 Mariadb 版本 10.1.18 中使用 JSON EXTRACT

MySQL 5.7 JSON_EXTRACT 不适用于对象中的带引号的字符串:[错误]“字符串中缺少右引号”

mysql中json_extract函数的使用?作用是什么?

MySQL LIKE 与 json_extract