2013-03-04 4 views
1

В моей базе данных используется целое число в момент времени для даты в этой таблице.Заявление sql, теперь - 6 месяцев в unix/epoch time

Я хочу сделать что-то вроде этого:

select * from myTable where date_column > CURRENT_TIMESTAMP - 6 months

Я не уверен, как получить 6 месяцев из-за этого, динамично. И результат CURRENT_TIMESTAMP - 6 months должен быть во время эпохи

прозрение оценило

+1

какая версия SQL вы используете? –

+0

postgres, не уверен, более тонкие детали – CQM

ответ

1

В Postgres, я считаю, что правильный синтаксис:

date_column > EXTRACT('epoch' from (NOW() - interval ' 6 months')) 

или аналогичным образом:

to_timestamp(date_column) > (NOW() - interval ' 6 months')) 

Вы можете прочитать полную документацию date/time functions for Postgres для получения дополнительной информации

+0

в порядке, я чувствую, что это ближе к знаку для меня, но моя дата_колонка хранит время в виде целых чисел , c'est la vie, как я могу сделать это сравнение? 'date_column> NOW() - Interval '6 months' – CQM

+0

Просто конвертируйте тот или другой в соответствующий формат данных – JohnnyO

+0

спасибо, можете ли вы взглянуть на этот вопрос? http://stackoverflow.com/questions/15211408/sql-return-dates-where-there-are-no-results – CQM

2

В MSSQL вы можете использовать

select * 
from myTable 
where date_column > dateadd(month,-6,CURRENT_TIMESTAMP) 
+0

только что узнал, что метод dateadd не входит в postgres, я поставлю postgres в теге – CQM

0

Вы можете попробовать это

SELECT * 
    FROM myTable 
WHERE TO_TIMESTAMP(date_column) > CURRENT_DATE - INTERVAL '6 MONTH'; 

Здесь sqlfiddle

Смежные вопросы