我想将查询中的日期和时间的datetime值设置为零 我正在
将varchar数据类型转换为datetime数据类型导致值超出范围
select case when DATECOMPLETED is null then '0000-00-00 00:00:00' else DATECOMPLETED end from FDWELCOMECALL
答案 0 :(得分:1)
如documentation中所述,您的值不是有效值:
DATETIME类型用于包含日期和时间的值 部分。 MySQL检索并在'YYYY-MM-DD中显示DATETIME值 HH:MM:SS'格式。支持的范围是“ 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
答案 1 :(得分:1)
不能。 0000
不是有效的年份,而00
不是有效的月份。
最好的办法是将其保留为null
。
如果这不是一个选择,请为日期时间使用最小值/最大值:
1000-01-01 00:00:00
/ 9999-12-31 23:59:59
正如草莓在comments中指出的那样,Date
数据类型确实支持0000-00-00
(尽管official documentation指出它是无效日期/日期时间值的值)。 / p>
答案 2 :(得分:0)
如对另一个问题的回答中所述,datetime类型不会那么低。您很可能需要使用NULL。
答案 3 :(得分:0)
我建议将表列更改为默认值
ALTER TABLE FDWELCOMECALL ALTER DATECOMPLETED SET DEFAULT '1000-01-01 00:00:00';