如何在 SQLite3 和 PostgreSQL 中从时间戳中选择日期
在我的 Rails 项目中,我有一个充满时间戳行的分数表,我需要查询并查找每天的最新记录。尽管我在 sqlite3 中本地开发/测试,但我的生产数据库是 PostgreSQL。
我在构造 SQL 查询以仅从时间戳中提取日期时遇到问题。因此,如果这是时间戳:2010-12-13 23:03:40.485012+0000,那么我只需要检查 2010-12-13 并忽略时间。
Scores table:
id :integer
name :string
score :integer
updated_at :timestamp
由于每个名称每天都有多行,因此我想找到每天的最大时间戳,然后查看每个名称每天的最新分数。
我尝试过使用 DATE() 函数,但没有成功。有人知道这样做的最佳方法吗?
In my Rails project, I have a scores table full of timestamp rows that I need to query and find the LATEST record from each day. My production database is PostgreSQL though I develop/test locally in sqlite3.
I'm having trouble structuring the SQL query to pull just the date from the timestamp. So if this is the timestamp: 2010-12-13 23:03:40.485012+0000, then I need to just examine 2010-12-13 and ignore the time.
Scores table:
id :integer
name :string
score :integer
updated_at :timestamp
And since I have multiple rows per day for each name, I'd like to find the MAX timestamp if each day, and just look at the latest score of each day for each name.
I've tried using the DATE() function without any luck. Anyone know the best method of doing this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在SQLite 日期函数中,您需要一个冒号来分隔时区中的小时和分钟。
这是一个坏主意。使用与生产相同的数据库进行测试。
In the the SQLite date functions, you need a colon to separate hours and minutes in the timezone.
This is a bad idea. Test with the same database you use for production.
对于 PostgreSQL,您可以使用:
CAST(updated_at AS DATE)
For PostgreSQL you can use:
CAST(updated_at AS DATE)
在 PostgreSQL 中,您可以使用
::
。In PostgreSQL you can use
::
.