2017-01-27 3 views
0

Я хочу добавить каждую дату года в таблицу моей базы данных. Как я мог это сделать?Вставить каждую дату года mysql

Я искал в google, но нет подсказки.

Пожалуйста, помогите мне с некоторым запросом на ввод, чтобы сделать это.

Это моя структура таблицы.

id | date 
--------- 
1 | 2017-01-01 
+0

проверить этот пример http://stackoverflow.com/questions/9295616/how-to-get-list-of-dates-between-two-dates-in-mysql-select-query –

ответ

1

Обновлено после уточнения вопроса.

Вот обновленная версия, попробуйте это. Чтобы цикл while работал, вам необходимо создать его как хранимую процедуру. Создайте хранимую процедуру, как так

DELIMITER $$ 

create PROCEDURE insert_year_dates() 
BEGIN 
    SET @t_current = NOW(); 
    SET @t_end = DATE_ADD(NOW(), INTERVAL 1 YEAR); 
    WHILE(@t_current< @t_end) DO 
     INSERT INTO day (day) VALUES (@t_current); 
     SET @t_current = DATE_ADD(@t_current, INTERVAL 1 DAY); 
    END WHILE; 
END; 

Затем вызовите эту хранимую процедуру с помощью

CALL insert_year_dates() 
+0

могли бы вы дать я полный запрос вставки с вашим ответом, и я хочу формат даты, как этот 'yyyy-mm-dd' – Antonio

+0

Я обновил ответ, но, как я уже сказал, не знаю, какова структура вашей таблицы, я не могу дать вам точный запрос , – Jhorra

+0

Я только что редактировал свои вопросы со структурой таблицы, и это просто таблица simpe с полем 'id' и' date' – Antonio

-1

В MySQL вы можете выбрать столбец заполняется только с форматом даты. Вы можете вставить данные как «2017» или «17». Он будет работать отлично.

1

вы можете попробовать его сначала получить всю дату между датой и добавить его.

insert into day (date) 
    select * from 
    (select adddate('1970-01-01',t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) selected_date from 
    (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0, 
    (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1, 
    (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2, 
    (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3, 
    (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) v 
    where selected_date between '2017-01-01' and '2017-12-31' 
+0

У меня ошибка: «У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии сервера MariaDB, для правильного синтаксиса для использования рядом с 'как выберите * из (выберите adddate (' 1970-01-01 ', t4.i * 10000 + t3.i * 1000' на линии 1' – Antonio

+0

oh удалить ** как **. Проверить его сейчас –

+0

Помогите мне с этими вопросами [Resul query with if condition] (http://stackoverflow.com/questions/41929355/return-query-result-with- if-condition) – Antonio

Смежные вопросы