表结构中的DateTime字段为'not null',但我想存储数据(MVC C#Datetime)0000-00-00 00:00:00到MySQL表没有改变表结构。转换C#日期时间为0000-00-00 00:00:00到MySQL
我试图做到这一点,但其但错误!
Convert.ToDateTime("0000/00/00");
请帮帮忙,谢谢
表结构中的DateTime字段为'not null',但我想存储数据(MVC C#Datetime)0000-00-00 00:00:00到MySQL表没有改变表结构。转换C#日期时间为0000-00-00 00:00:00到MySQL
我试图做到这一点,但其但错误!
Convert.ToDateTime("0000/00/00");
请帮帮忙,谢谢
.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',然后如果可以在表示层中更改此值。
如果你想 '0000-00-00' 保存在MySQL,那么你应该检查SQL模式MySQL服务器 -
SELECT * FROM information_schema.GLOBAL_VARIABLES
WHERE VARIABLE_NAME = 'sql_mode';
从技术文档:NO_ZERO_DATE - 在严格模式下,不允许“0000 -00-00'作为有效日期。您仍然可以使用IGNORE选项插入零日期。未处于严格模式时,将接受日期,但会生成警告。
您需要插入这些值作为字符串
像这样
Create table tbl(dt datetime);
Insert into tbl values('0000-00-00 00:00:00');
SELECT CAST(dt as char) FROM tbl
感谢您的帮助,你举了一个WCF数据服务的例子吗? –
我找不到你 –
如果你问如何创建C#DateTime对象与0000-00-00 00:00:00 - 你不能,这是一个无效的数据即你可以使用DateTime.MinValue。从内存0000-01-01 00:00:00
为什么不使用NULL?使用魔术值而不是NULL并不总是一个好主意。
谢谢你让我意识到它不能这样做:) –
谢谢,希望这有助于:) –
+1对'NO_ZERO_DATE - 在严格模式下,不允许'0000-00-00'作为有效日期“ –