表结构中的DateTime字段为'not null'但我想将数据(MVC C#Datetime)0000-00-00 00:00:00存储到MySQL表而没有更改表结构。
我尽力做到这一点,但它错了!!
Convert.ToDateTime("0000/00/00");
请帮助,谢谢
答案 0 :(得分:2)
.NET DateTime的最小值是0001年1月1日; MySQL DATETIME的最小值是'1000-01-01',但是在SQL MODE的情况下可以插入'0000-00-00'作为DATE,请参阅文档中的NO_ZERO_DATE。
如果要在.NET DateTime结构中存储'0000-00-00',则使用'0001-01-01',然后如果可以在表示层中更改此值。
如果你想在MySQL中存储'0000-00-00',那么你应该检查MySQL服务器中的SQL MODE -
SELECT * FROM information_schema.GLOBAL_VARIABLES
WHERE VARIABLE_NAME = 'sql_mode';
来自文档:NO_ZERO_DATE - 在严格模式下,不要将'0000-00-00'作为有效日期。您仍然可以使用IGNORE选项插入零日期。如果不是严格模式,则接受日期,但会生成警告。
答案 1 :(得分:0)
您需要将这些值作为字符串
插入喜欢这个
Create table tbl(dt datetime);
Insert into tbl values('0000-00-00 00:00:00');
SELECT CAST(dt as char) FROM tbl
答案 2 :(得分:0)
如果你问如何用00:00:00创建一个C#DateTime对象 - 你不能,这是一个无效的日期。您可以使用DateTime.MinValue。从内存0000-01-01 00:00:00
为什么不使用NULL?使用魔术值而不是NULL并不总是一个好主意。