将C#Datetime转换为0000-00-00 00:00:00到MySQL

时间:2014-01-28 05:43:18

标签: c# mysql asp.net-mvc-4 datetime

表结构中的DateTime字段为'not null'但我想将数据(MVC C#Datetime)0000-00-00 00:00:00存储到MySQL表而没有更改表结构。

我尽力做到这一点,但它错了!!

Convert.ToDateTime("0000/00/00");

请帮助,谢谢

3 个答案:

答案 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选项插入零日期。如果不是严格模式,则接受日期,但会生成警告。

Server SQL Modes

答案 1 :(得分:0)

您需要将这些值作为字符串

插入

喜欢这个

Create table tbl(dt datetime);
Insert into tbl values('0000-00-00 00:00:00');
SELECT CAST(dt as char) FROM tbl

Fiddle

答案 2 :(得分:0)

如果你问如何用00:00:00创建一个C#DateTime对象 - 你不能,这是一个无效的日期。您可以使用DateTime.MinValue。从内存0000-01-01 00:00:00

为什么不使用NULL?使用魔术值而不是NULL并不总是一个好主意。