如何从SQLite3和PostgreSQL中的时间戳中选择日期

时间:2010-12-15 18:46:27

标签: ruby-on-rails postgresql sqlite

在我的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()函数。有人知道这样做的最佳方法吗?

3 个答案:

答案 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;