如何使用 SQL 从 MongoDB ObjectId 中检索日期

Sic*_*cco 5 sql mongodb

在 MongoDB 中,您可以使用该getTimestamp()函数从 ObjectId 检索日期。如何使用 SQL 从 MongoDB ObjectId 中检索日期(例如,在这样的 ObjectId 存储在 MySQL 数据库中的情况下)?

示例输入:

507c7f79bcf86cd7994f6c0e
Run Code Online (Sandbox Code Playgroud)

想要的输出:

2012-10-15T21:26:17Z
Run Code Online (Sandbox Code Playgroud)

Sic*_*cco 5

这可以objectId在 MySQL 中实现如下(假设是一个字符串):

SELECT FROM_UNIXTIME(
    CAST(CONV(SUBSTR(objectId, 1, 8), 16, 10) AS UNSIGNED)
) FROM table
Run Code Online (Sandbox Code Playgroud)

它的工作原理如下:

  • SUBSTR(objectId, 1, 8)取十六进制objectId字符串的前 8 个字符
  • CONV(..., 16, 10) 将十六进制数转换为十进制数并以字符串形式返回(代表 UNIX 时间戳)
  • CAST (...) AS UNSIGNED 将时间戳字符串转换为无符号整数
  • FROM_UNIXTIME(...) 将时间戳整数转换为日期

请注意,默认情况下,显示的日期将基于您系统的时区设置。

  • @NeilLunn,仅仅因为它与*你*无关并不意味着其他人不会觉得它有用。 (4认同)