#javascript #mysql #sql
#javascript #mysql #sql
Вопрос:
Я пытаюсь обновлять возраст каждый день в полночь. В настоящее время в таблице три столбца: id, DOB и возраст. Пользователь вводит DOB (формат ГГГГММДД), из которого я вычисляю возраст и вставляю в БД.
Код JS для вычисления возраста:
calculateAge(birthDate) {
let year = birthDate.slice(0,4);
let month = birthDate.slice(4,6);
let day = birthDate.slice(6);
birthDate = year '/' month '/' day;
birthDate = new Date(birthDate);
let today = new Date();
var years = (today.getFullYear() - birthDate.getFullYear());
if (today.getMonth() < birthDate.getMonth() ||
today.getMonth() == birthDate.getMonth() amp;amp; today.getDate() < birthDate.getDate()) {
years--;
}
return years;
}
Как только он станет 2021/02/11, как мне убедиться, что возраст для id = 2 изменится на 31?
Мои мысли о необходимых шагах :
- Получите все данные
let data = connection.query('SELECT * FROM my_table_name');
- вычислите новый возраст
for(let i = 0; i < data.length; i ) {
data[i].age = calculateAge(data[i].DOB);
}
- Вставьте обновленный возраст обратно в БД
CREATE EVENT update_age
ON SCHEDULE
EVERY 1 DAY
STARTS '2021-02-11 00:00:00'
DO
UPDATE my_table_name
SET age = ?
WHERE
... ;
Шаг 3 — это то, где я сейчас застрял.
Прежде всего, мне нужен Javascript для ежедневного выполнения шагов 1 и 2…Как бы я это реализовал? Во-вторых, поскольку я в основном обновляю всю базу данных, я не знаю, какое условие должно быть указано be..in другими словами, как мне указать базе данных УСТАНОВИТЬ возраст = 31, где id = 2?
Комментарии:
1. Измените
DOB
столбец на правильный формат даты . Любая веская причина, по которой значение даты должно быть таким? И я поддерживаю мнение о том, чтобы извлекать возраст с помощью запроса, а не хранить его в БД.
Ответ №1:
Хранение возраста в базе данных усложняет это и может привести к проблемам, если, например, ежедневное задание по обновлению возраста не выполняется.
Я бы вообще удалил столбец возраста из базы данных и просто вычислил возраст с даты рождения при запросе данных.