Как выбрать просто дату из отметки времени в SQLite3 и PostgreSQL - PullRequest
0 голосов
/ 15 декабря 2010

В моем проекте 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 ]

1 голос
/ 22 декабря 2010

В функции даты 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.

Это плохая идея. Протестируйте с той же базой данных, которую вы используете для производства.

0 голосов
/ 22 декабря 2010

В PostgreSQL вы можете использовать ::.

declare _now timestamp with time zont := now();
declare dt date := _now::date;
0 голосов
/ 15 декабря 2010

Для PostgreSQL вы можете использовать:

CAST(updated_at AS DATE)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...