|
|
|
| запрос:
UPDATE `table`
SET `date` = CAST(CONCAT(CURDATE(),' ', TIME(`date`)) AS DATETIME)
WHERE id = 236
|
результат:
Affected rows: 0
запрос2:
UPDATE `table`
SET `date` = NOW()
WHERE id = 236
|
результат:
Affected rows: 1
почему первый не сработал?
контекст - хочу сделать обновление поля date, причем обновить только дату, т.е. время чтобы тоже самое осталось. Тип поля timestamp, но пробовал и datetime - результат тот же | |
|
|
|
|
|
|
|
для: Igorek
(24.04.2012 в 14:10)
| | Попробуйте без CAST, просто присвоить результат CONCAT(). Результат тот же? | |
|
|
|
|
|
|
|
для: cheops
(24.04.2012 в 14:15)
| | Результат тот же. | |
|
|
|
|
|
|
|
для: Igorek
(24.04.2012 в 14:10)
| | а что у вас за логика кода? что он делает?
может удобнее хранить дату и время в отдельных полях? | |
|
|
|
|
|
|
|
для: Valick
(24.04.2012 в 15:13)
| | всю логику долго объяснять) да это и не нужно.
попробуйте сами:
CREATE TABLE `test` (
`date` DATETIME NULL
);
INSERT INTO `test` (`date`) VALUES (NOW());
|
затем:
UPDATE `test`
SET `date` = CONCAT(CURDATE(), " ", TIME(`date`))
|
>может удобнее хранить дату и время в отдельных полях?
перебирать весь проект ради этого?! увольте))
что-то с запросом не так. не могу понять только что( | |
|
|
|
|
|
|
|
для: Igorek
(24.04.2012 в 15:26)
| |
SET `date` = CONCAT(CURDATE(), " ",TIME_FORMAT(`date`,"%H:%i:%s"))
|
дайте мне ссылку на функцию TIME() в MySQL | |
|
|
|
|
|
|
|
для: Valick
(24.04.2012 в 15:49)
| | Она в 5 версии по-моему появилось, т.е. относительно недавно (но она точно есть и вырезает время). | |
|
|
|
|
|
|
|
для: cheops
(24.04.2012 в 15:54)
| | если бы я был уверен что ее нет я бы так и написал
поэтому и попросил ссылку, где скорее всего и версия сервера должна быть указана
да и сервер не ругался, а просто не делал того что ожидается от запроса | |
|
|
|
|
|
|
|
для: Valick
(24.04.2012 в 16:00)
| | Версии по-дурацки указываются, фиг чего найдешь, только в документации мажорной версии. Введена она оказывается в MySQL 4.1.1., вот в "MySQL 3.23, 4.0, 4.1 Reference Manual" эту информацию можно найти, а в документации к следующим версиям уже нет. В MySQL всегда так поступают (ну по крайней мере поступали до недавнего времени). | |
|
|
|
|
|
|
|
для: Igorek
(24.04.2012 в 15:26)
| | попробовал - все работает, а ноль строк затрунутых выдает, так как замену производить не нужно - дата то сегодняшняя вводится инсертом. | |
|
|
|
|
|
|
|
для: Lotanaen
(24.04.2012 в 15:57)
| | Да, действительно так.
Я то вот думал, что при апдейте в любом случае Affected Rows будет 1...
Т.е. код верный (и CAST здесь не нужен), а вот интерпретация результатов подвела))
Всем спасибо за помощь! | |
|
|
|
|
|
|
|
для: Lotanaen
(24.04.2012 в 15:57)
| | странно, у меня тоже заработало, хотя сначала время в нули сбрасывало | |
|
|
|