2014-08-18 4 views
0

попробовал этот запрос для ввода двух дней старше датаВставка старой даты в тузде таблице

INSERT INTO `subject` (`id` ,`marks` ,`entry`) 
VALUES ('12121', '12','CURRENT_DATE()-2'); 

дает

id | marks | entry 
    12121  12  0000-00-00 

также попытался 'CURRENT_DATE() interval 2'

+0

'также пытался«CURRENT_DATE() интервал 2'' Как вы пробовали? –

ответ

2

Вы вставляете строку в даты. Строка преобразуется в число со значением 0. Вместо этого, попробуйте следующее:

INSERT INTO subject(id, marks, entry) 
    SELECT '12121', '12', CURRENT_DATE() - interval 2 day; 
+0

Требуются 'interval' и' day' в MySQL или будет 'CURRENT_DATE() - 2' тоже работать? (Я пришел из фона Oracle, где вы просто делали 'SYSDATE - 2') – JonK

+0

@JonK: - Вам нужно указать, что вы пытаетесь добавить или вычесть, т.е. 2 дня или 2 месяца! :) –

+0

@JonK. , , При выполнении арифметики по дате/времени MySQL легко ошибиться. У MySQL есть эта (раздражающая) функция иногда обрабатывать даты как числа, а не даты, поэтому 'select now() - 30' вычитает 30 секунд. И 'CURRENT_DATE - 30' не делает то, что вы думаете (сегодня он производит номер 20140788). В любом случае, чтобы предотвратить путаницу, я использую 'interval' в MySQL. –

2

Попробуйте это:

INSERT INTO `subject`(`id` ,`marks` ,`entry`) 
SELECT '12121', '12', CURRENT_DATE() - interval 2 day; 
Смежные вопросы