gpt4 book ai didi

mysql - 毫秒转换并获取年份

转载 作者:行者123 更新时间:2023-11-29 04:34:27 26 4
gpt4 key购买 nike

我有一个包含以毫秒为格式的日期的 BIGINT。我希望按所选列 created_at 的年份过滤记录。我正在使用 MYSQL 作为我的数据库。

这是我目前在 Controller 中的内容。

@agent = Agent.where('Time.at(created_at/1000).year = ?', '2017')

它提供了以下错误:

Mysql2::Error: You have an error in your SQL syntax

最佳答案

数据库不理解像 Time.at(created_at/1000).year 这样的 Ruby 代码,所以你不能在这样的 where 调用中使用它, where 的这种形式适用于 SQL 的片段,而不适用于 Ruby

您可以让数据库完成从“自纪元以来的毫秒数”created_at 值中提取年份的工作。您可以使用 MySQL 的 from_unixtime 一步完成。具有适当格式字符串的函数:

Agent.where("from_unixtime(created_at/1000, '%Y') = ?", '2017')

这几乎与您尝试将 Ruby 代码发送到数据库相同。

当然,您可能更喜欢用 Ruby 完成工作,如 Charlie Weems's answer虽然。

如果您经常这样做并且 WHERE 子句中没有其他内容可以减少您正在查看的行数,您可能想要比较每种方法如何与您拥有的任何索引交互。

关于mysql - 毫秒转换并获取年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47404832/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com