Как рассчитать текущую дату с помощью SQL - PullRequest
0 голосов
/ 03 июля 2019

У меня есть список клиентов, которые получили электронное письмо на разные даты. На основе дня, когда было отправлено электронное письмо, я хочу рассчитать дату год назад (т.е., если электронное письмо было отправлено 2019-07-01, мне нужно извлечь 2018-07-01 для этого конкретного клиента), а затем мне нужно это новая (старая) дата в качестве значения в моей таблице. Как я могу лучше всего сделать это, используя postgreSQL?

Кажется, я понял это с твоей помощью. Мой код

     select cast(cdi_senton as date) as senton
     , senton - interval '365 day' as senton_lastyear

Ответы [ 3 ]

0 голосов
/ 03 июля 2019

Невозможно ответить полностью, потому что вы не сказали нам, какой продукт базы данных вы используете, но это не большая проблема - просто Google для <name of your db> date sub, чтобы получить синтаксис, соответствующий вашей БД для выполнения математики даты, а затемвставьте его в запрос, подобный следующему:

UPDATE customer SET email_date = <the function you googled, to subtract one year>

Замените email_date фактическим именем столбца вашей таблицы

Примеры:

Сервер SQL:

UPDATE customer SET email_date = DATEADD(year, -1, email_date)

Oracle:

UPDATE customer SET email_date = ADD_MONTHS(email_date, -12)

MySQL:

UPDATE customer SET email_date = DATE_SUB(email_date, INTERVAL 1 YEAR)

PostgreSQL

кредитов и благодаря a_horse_with_no_name

UPDATE customer SET email_date = email_date - interval '1' year;

Имейте в виду, что даже если вы можете найти только примеры, которые добавляют дату, вы можете передать ей минус, чтобы вернуться во времени

0 голосов
/ 03 июля 2019

Вы можете просто вычесть интервал :

select cast(cdi_senton as date) as senton, 
       cdi_senton - interval '1 year' as senton_last_year
from the_table 
...;

Предполагается, что cdi_senton определяется как date или timestamp

Онлайн пример:https://rextester.com/MPJM45737

0 голосов
/ 03 июля 2019

Для TSQl (Sql Server) Используйте функцию dateadd, например,

select DateAdd(year, -1, GetDate())

Будет вычитаться год с сегодняшнего дня, вместо GetDate () подставьте свою собственную дату

Если вы используете mySql, используйте Date_add (Google для синтаксиса)

Если Oracle, DateAdd также существует, просто проверьте аргументы

Если что-то еще, я получил nuthin.

...