2015-10-12 2 views
0

Как я могу сделать правильный запрос как:Postgresql дата вычитать

UPDATE b2c SET tranche = '18 - 25' 
WHERE (dateofbirth::date BETWEEN NOW()::date - 18 'year' AND NOW()::date - 25 'year') 

Спасибо за помощь

ответ

1
dateofbirth::date BETWEEN 
    (NOW() - interval '25 year')::date AND 
    (NOW() - interval '18 year')::date 
+0

Спасибо, но у меня есть 'nothink обновление', однако у меня есть в 'DateOfBirth' некоторые даты, как 1995 -08-04, 1994-08-07, 1993-11-11 ... – Macbernie

+0

Извините, мне просто нужно было переключиться на 25 лет с 18 лет ... Я не знал, что порядок МЕЖДУНАРОДНОГО аргумента имеет значение ... – Macbernie

+0

@Macbernie Исправлено. Даты были перевернуты. Это самый старый. –

1

Вы можете использовать Postgres отливать синтаксис:

UPDATE b2c SET tranche = '18 - 25' 
WHERE dateofbirth::date BETWEEN 
    NOW()::date - '25y'::interval AND 
    NOW()::date - '18y'::interval 
1

С помощью EXTRACT() и Age()

select EXTRACT(year FROM age('1995-08-04'::date))::int age 

Выход:

age 
integer 
-------- 
     20 

Таким образом, вы можете написать где состояние как ниже

UPDATE b2c SET tranche = '18 - 25' 
WHERE EXTRACT(year FROM age(dateofbirth))::int >=18 
AND EXTRACT(year FROM age(dateofbirth))::int <=25 
Смежные вопросы