如何将日期时间设置为零

时间:2019-01-28 12:03:58

标签: mysql sql

我想将查询中的日期和时间的datetime值设置为零 我正在

  

将varchar数据类型转换为datetime数据类型导致值超出范围

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

4 个答案:

答案 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。

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

答案 3 :(得分:0)

我建议将表列更改为默认值

ALTER TABLE FDWELCOMECALL ALTER DATECOMPLETED SET DEFAULT '1000-01-01 00:00:00'; 
相关问题