2014-03-11 3 views
0

У меня есть таблица с 365 записями, эта таблица также имеет один столбец с нулевым значением. Я хочу вставить дату во все строки с шагом в 1 день с текущей датой. Ex: текущая дата в 1-й колонке, а во 2-й колонке она должна быть на следующий день и т. Д. Разница должна быть 24 часа между всеми датами записи.Поле даты приращения даты

+0

Итак, вы читали о 'UPDATE' и/или DATEADD'? Это действительно тривиальная операция. – JNK

ответ

1

Вы можете использовать это обновление запрос:

UPDATE tbl SET Col2 = DATEADD(d, 1, Col1) 
+0

после запуска этого окна сообщений запроса отображает 364 строки, а таблица по-прежнему показывает нулевой результат для всех столбцов даты в столбце даты. – Vaibhav

+0

'364 rows affected', тогда у вас есть 364 строки в вашем столе. Покажите сценарий создания и вставки таблицы. –

0

Хранимая процедура с курсором внутри должен делать эту работу:

DELIMITER $$ 

DROP PROCEDURE IF EXISTS `insert_ascending_dates` $$ 
CREATE PROCEDURE `insert_ascending_dates`() 
BEGIN 

declare done int default false; 
declare t_id int; 
declare c cursor for select [id] from [table]; 
declare continue handler for not found set done = true; 

set @dte = date(); 
set @strSql = 'update [table] set [date] = ? where [id] = ?'; 
prepare stmt from @strSql; 

open c; 
read_loop: loop 
    fetch c into t_id; 
    if done then 
    leave read_loop; 
    end if; 
    set @tId = t_id; 
    execute stmt using @dte, @tId; 
    set @dte = date_add(@dte, interval 1 day); 
end loop; 
close c; 

deallocate prepare stmt; 

END $$ 

DELIMITER ; 

После создания рутины, вам нужно позвонить как следует:

call insert_ascending_dates(); 
+0

Посмотрите на тег. –

+0

Странно, этот вопрос возник, когда я искал «ответы mysql: 0». Я не думал смотреть на тег. Обязательно сделайте это в следующий раз. –

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