在我的Rails项目中,我有一个满分时间戳行的分数表,我需要查询并查找每天的最新记录。我的生产数据库是PostgreSQL,虽然我在sqlite3中本地开发/测试。
我无法构建SQL查询以从时间戳中提取日期。所以,如果这是时间戳:2010-12-13 23:03:40.485012 + 0000,那么我需要检查2010-12-13并忽略时间。
Scores table:
id :integer
name :string
score :integer
updated_at :timestamp
由于每个名称每天都有多行,我希望每天找到MAX时间戳,并查看每个名称每天的最新得分。
我尝试过没有运气的DATE()函数。有人知道这样做的最佳方法吗?
答案 0 :(得分:1)
在the SQLite date functions中,您需要一个冒号来分隔时区中的小时和分钟。
sqlite> select date('2010-12-13 23:03:40.485012+0000');
[NULL]
sqlite> select date('2010-12-13 23:03:40.485012+00:00');
2010-12-13
我的生产数据库是PostgreSQL 虽然我在本地开发/测试 sqlite3的。
这是一个坏主意。使用您用于生产的相同数据库进行测试。
答案 1 :(得分:0)
对于PostgreSQL,您可以使用:
CAST(updated_at AS DATE)
答案 2 :(得分:0)
在PostgreSQL中,您可以使用::
。
declare _now timestamp with time zont := now();
declare dt date := _now::date;