как установить дату и время на ноль - PullRequest
0 голосов
/ 28 января 2019

Я хочу установить значение datetime в нули для даты и времени в запросе, который я получаю

преобразование типа данных varchar в тип данных datetime привело кзначения диапазона

select case when DATECOMPLETED is null then '0000-00-00 00:00:00' else DATECOMPLETED end from FDWELCOMECALL

Ответы [ 4 ]

0 голосов
/ 28 января 2019

Я бы предложил изменить столбец таблицы со значением по умолчанию

ALTER TABLE FDWELCOMECALL ALTER DATECOMPLETED SET DEFAULT '1000-01-01 00:00:00'; 
0 голосов
/ 28 января 2019

Вы не можете.0000 не является действительным годом, а 00 не является действительным месяцем.
Лучшее, что вы можете сделать, это оставить его как null.
Если это не вариант, используйте минимальное / максимальное значениедля даты и времени:
1000-01-01 00:00:00 / 9999-12-31 23:59:59

Как указывает клубника в комментариях , тип данных Date поддерживает 0000-00-00 (хотя официальнодокументация утверждает, что это значение для недопустимых значений даты / даты / времени).

0 голосов
/ 28 января 2019

Как указано в этом ответе на другой вопрос, тип datetime не так уж низок.Скорее всего, вам нужно использовать NULL.

https://stackoverflow.com/a/13179063/2793683

0 голосов
/ 28 января 2019

Как объяснено в документации , ваше значение недопустимо:

Тип DATETIME используется для значений, которые содержат как дату, так и время.MySQL извлекает и отображает значения DATETIME в формате «ГГГГ-ММ-ДД ЧЧ: ММ: СС».Поддерживаемый диапазон: от 1000-01-01 00:00:00 до 9999-12-31 23:59:59.

Выберите допустимое значение по умолчанию.Или научитесь жить со значениями NULL.

Я также должен отметить, что месяц "0" и день "0" не являются действительными датами.

Примечание: COALESCE() упростит логику:

select coalesce(DATECOMPLETED, '1000-01-01 00:00:00') from FDWELCOMECALL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...