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

发布于 2024-10-07 18:41:02 字数 434 浏览 2 评论 0原文

在我的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

月寒剑心 2024-10-14 18:41:02

SQLite 日期函数中,您需要一个冒号来分隔时区中的小时和分钟。

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。

这是一个坏主意。使用与生产相同的数据库进行测试。

In the the SQLite date functions, you need a colon to separate hours and minutes in the timezone.

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

My production database is PostgreSQL
though I develop/test locally in
sqlite3.

This is a bad idea. Test with the same database you use for production.

风吹过旳痕迹 2024-10-14 18:41:02

对于 PostgreSQL,您可以使用:

CAST(updated_at AS DATE)

For PostgreSQL you can use:

CAST(updated_at AS DATE)

丢了幸福的猪 2024-10-14 18:41:02

在 PostgreSQL 中,您可以使用 ::

declare _now timestamp with time zont := now();
declare dt date := _now::date;

In PostgreSQL you can use ::.

declare _now timestamp with time zont := now();
declare dt date := _now::date;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文