C# 为什么日期字段的值与空值不同

C# 为什么日期字段的值与空值不同,c#,mysql,C#,Mysql,我在我的程序中意识到了一些程序,它们给了我下面看到的查询行(恢复的数据)。 mysql表中的日期字段设置为默认空,除日期字段外,所有行都插入良好 INSERT INTO `stockdata` VALUES(4,6,'',0,1,'2014-01-01','STOCK2013',8.13,0,0,2990,0,0,'STOCK REEL 2013','',1,'2014-02-18 01:10:04',0,'') 这是我如何进入数据库的,日期字段中有0000/00/00:00:00(最后一个字

我在我的程序中意识到了一些程序,它们给了我下面看到的查询行(恢复的数据)。 mysql表中的日期字段设置为默认空,除日期字段外,所有行都插入良好

INSERT INTO `stockdata` VALUES(4,6,'',0,1,'2014-01-01','STOCK2013',8.13,0,0,2990,0,0,'STOCK REEL 2013','',1,'2014-02-18 01:10:04',0,'')
这是我如何进入数据库的,日期字段中有0000/00/00:00:00(最后一个字段“”)

查询中获得的null值定义为public类

 public DateTime? MyNullableDate = null;
但是,当我使用带有字段名的查询并将日期字段留空时,我会在表中看到空值

这是将空值传递给日期字段的唯一方法吗?我对本地主机使用XAMPP,对共享数据使用godaddy服务器

这里是sqlfiddle,我甚至无法获取空日期字段


NULL永远不等于任何东西,甚至不等于它本身

因此,要获取空值,请使用
IS null

SELECT * FROM stockdata WHERE up_date is null

您似乎将数据添加为“”,这意味着该值为“空”且不为null,您是否已尝试插入null而不是“”

但我认为最好保留默认值:

INSERT INTO `stockdata` VALUES(4,6,'',0,1,'2014-01-01','STOCK2013',8.13,0,0,2990,0,0,'STOCK REEL 2013','',1,'2014-02-18 01:10:04',0,DEFAULT)

然而,问题的主要部分仍然存在,因为当我使用字段名编写查询并将其留空时,它在数据库中写得很好,为null,但如果我放入任何内容(如我上面所述),它将转换为0000-00-00:00:00@IsmailGunes如果我放了什么东西,我不清楚你的意思。当您插入时,您是否正在为该列寻找默认值?我首先尝试了这些,甚至是公共日期时间?MyNullableDate=null;当我在服务器上加载查询时,其中的日期字段默认设置为null,它将传递到那里0000-00-00 00:00:00,但当我这样编写整个查询时,它将正常工作。在
股票数据中插入(id、matid、nom、prodid、MATCUNICE、st_日期、工厂号、蒙塔特、付款类型、TVAVALVE、数量、状态、截止日期、信息、批次、cr_用户、cr_日期、up_用户)值(3,5',0,1,'2014-01-01',STOCK2013',4.46,0,03690,0,0,'STOCKRELL 2013','2014-02-18 01:08:30',0)在这里,我不添加up_date字段的名称,并在值中留空。这就行了!
INSERT INTO `stockdata` VALUES(4,6,'',0,1,'2014-01-01','STOCK2013',8.13,0,0,2990,0,0,'STOCK REEL 2013','',1,'2014-02-18 01:10:04',0,NULL)
INSERT INTO `stockdata` VALUES(4,6,'',0,1,'2014-01-01','STOCK2013',8.13,0,0,2990,0,0,'STOCK REEL 2013','',1,'2014-02-18 01:10:04',0,DEFAULT)