Нахождение чьего-то возраста в SQL

pst.setString(2, addDate);

Я думаю, что это должно быть изменено на:

pst.setString(1, addDate);

, потому что у вас есть только один параметр в вашем подготовленном утверждении.

Кроме того, при сравнении дат необходимо заключать их в одинарные кавычки, поэтому также необходимо изменить строку UpdateQuery на
"UPDATE company SET permission = '"+Allow+"' WHERE date < '?' ";

.

8
задан Javier 12 November 2008 в 12:43
поделиться

2 ответа

Проверьте эту статью: Как вычислить возраст человека, использующего коды SQL

Вот код от статьи:

DECLARE @BirthDate DATETIME
DECLARE @CurrentDate DATETIME

SELECT @CurrentDate = '20070210', @BirthDate = '19790519'

SELECT DATEDIFF(YY, @BirthDate, @CurrentDate) - CASE WHEN( (MONTH(@BirthDate)*100 + DAY(@BirthDate)) > (MONTH(@CurrentDate)*100 + DAY(@CurrentDate)) ) THEN 1 ELSE 0 END 
21
ответ дан 5 December 2019 в 05:35
поделиться

Существует иначе, который немного более прост:

Select CAST(DATEDIFF(hh, [birthdate], GETDATE()) / 8766 AS int) AS Age

Поскольку округление здесь очень детализировано, это почти совершенно точно. Исключения являются столь замысловатыми, что они являются почти юмористическими: каждый четвертый год возвращенный возраст будет одним годом, слишком молодым, если мы A) просим возраст до 6:00, B) в день рождения человека и C) их день рождения после 28-го февраля. В моей установке это - совершенно приемлемый компромисс.

5
ответ дан 5 December 2019 в 05:35
поделиться