为什么日期字段存储的值不同,则为null

时间:2014-12-17 17:21:46

标签: c# mysql

我在程序中意识到一些程序给了我下面看到的查询行(恢复数据)。 mysql表中的日期字段设置为Default 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,'')

以下是我进入数据库的方式,日期字段中有0000/00/00 00:00:00(最后一个字段'')

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:00' // taken by Mysqlquery Browser 1.1.20 however when I look with phpmyadmin or within my program there is always 0000/00/00 00:00:00

在查询中获取的null值被定义为公共类

 public DateTime? MyNullableDate = null;

但是当我使用带有字段名称的查询时,我将日期字段留空,我在表格中看到空值。

这是将null值传递给date字段的唯一方法吗?我将XAMPP用于本地主机和godaddy服务器以获取共享数据。

这是sqlfiddle,我甚至无法获得null date字段。

Sqlfiddle

2 个答案:

答案 0 :(得分:1)

NULL永远不会等于任何东西,甚至不是自己。

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

SELECT * FROM stockdata WHERE up_date is null

Fiddle

答案 1 :(得分:0)

您似乎将数据添加为'',这意味着该值为"空"并且不是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,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)