Перенос данных из одного поля в другое в таблице

nekitr

Новичок
Подскажите, какой запрос сделать. В таблице есть поле "birthday" формата DATE 0000-00-00. Нужно перенести данные из этого поля в 3 новых поля (если только данные в поле не 0000-00-00):
day
month
year

Соответственно, чтобы были отдельно год, месяц, день
 

Single

пилот капсулы
zerkms
Согласен, поспешил. Через where логичнее будет.
 

nekitr

Новичок
А как будет выглядеть сам запрос, т.к. я, мягко говоря, не особо в этом разбираюсь.
 

zerkms

TDD infected
Команда форума
nekitr
Просто интересно, а как получилось, что вы делаете то, в чём не разбираетесь?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
У меня более глубокий вопрос, нафига хранить даты отдельно?
 

nekitr

Новичок
Я и сам не знаю, т.к структуру не я составлял, мне просто нужно перенести из одной в три другие.
 

zerkms

TDD infected
Команда форума
c0dex
Раздельно - чтобы искать именинников эффективно можно было, например.
 

Single

пилот капсулы
zerkms
Если нужно найти всех у ково скажем сегодня ДР почему нельзя просто сравнить даты с CURDATE()?
В чем именно заключается эффективность?
 

nekitr

Новичок
А если при поиске нужно отобрать людей, родившихся 10 числа любого месяца?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Мда, каша - капец. nekitr перед тем как что-то делать надо знать - надо ли оно тебе вообще. Проверки видимо на даты типа 1984-02-31 ты тоже сам писать будешь?
 

nekitr

Новичок
Нет, все уже написано. Нужно просто сконвертировать дату
 

zerkms

TDD infected
Команда форума
Эх...

PHP:
UPDATE tbl SET day_field = DAY(date_field), month_field = MONTH(date_field), year_field = YEAR(date_field) WHERE date_field != '0000-00-00'
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Ну ладно, фиг с тобой.

UPDATE `table` SET `day`=DAY(`date`), `month`=MONTH(`date`), `year`=YEAR(`date`) WHERE `date` != '0000-00-00'

вроде так
 

Single

пилот капсулы
zerkms
Single
РТФМ на тему индексов и фуллскана.
задача то как мне кажется не особо логична отсюда и такой же уровень решения.
я готов пожертвовать выборкой по индексам.
но, на практике не факт что я остался бы при своем мнении.
ТС в праве самостоятельно выбрать правильный для себе вариант решения задачи.
 

nekitr

Новичок
zerkms и c0dex, большое спасибо, проблема решена, все скопировалось куда нужно.
 
Сверху