В MonetDB, как я могу получить дату в виде целого числа?
Я хочу быть в состоянии сделать что-то вроде
SELECT cast(my_date_col AS int) FROM my_table;
Я хотел бы получить целое число, которое MonetDB использует внутри, то есть значение, которое вы найдете, если вы заглянете в структуру BAT и получите соответствующий элемент в коде в GDK MonetDB. Теперь, AFAICT, это внутреннее значение - это количество дней с начала Эпохи до 1 января в "Год 0" (поэтому 3 января 2 года будет 366+365+2 = 732).
Лучшее, что я мог сделать на самом деле
SELECT my_date_col AS int - cast('1-1-1' AS date) - 366 FROM my_table;
Поскольку MonetDB не примет даты "нулевой год". Это довольно уродливый хак, я бы хотел сделать лучше. Помоги мне?
1 ответ
Если вы пытаетесь получить количество дней между "my_date_col" и 1970-01-01, в стандартном SQL вы просто вычтете одно из другого. Кажется, ваша платформа, monetdb, поддерживает этот синтаксис, но я не установил его. Я написал эти примеры в PostgreSQL.
select current_date - date '1970-01-01' as num_days;
num_days - 16213
Проверьте этот результат, добавив 16213 дня к текущей дате (2014-05-23).
select cast ((date '1970-01-01' + interval '16213' day) as date) as target_date
установленный срок - 2014-05-23
Приведение необходимо, потому что результатом этого добавления является отметка времени, а не дата.
В вашем случае вам нужно имя столбца вместо "current_date". Итак, вы ищете что-то в этом роде.
select my_date_col - date '1970-01-01' as num_days
from your-table-name;