Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 检查表单日期字段是否等于1899-12-30 00:00:00.000_Sql_Vb.net_Datetime - Fatal编程技术网

Sql 检查表单日期字段是否等于1899-12-30 00:00:00.000

Sql 检查表单日期字段是否等于1899-12-30 00:00:00.000,sql,vb.net,datetime,Sql,Vb.net,Datetime,我知道这应该很简单,但经过几个小时的谷歌搜索,我还是失败了 我有一个vb.net表单应用程序。基本上,我有一个SQL数据库,其中有一个Employee表,该表的empfish列为datetime、null格式(Employee Finish Date)。数据从链接的SQL DB导入(从外部应用程序填充)。任何“空白”日期在SQL中显示为1899-12-30 00:00:00.000 员工表数据显示在datagridview表单上,选中一行,然后我要执行一项检查,以测试表单中的行完成日期是否早于或

我知道这应该很简单,但经过几个小时的谷歌搜索,我还是失败了

我有一个vb.net表单应用程序。基本上,我有一个SQL数据库,其中有一个Employee表,该表的empfish列为datetime、null格式(Employee Finish Date)。数据从链接的SQL DB导入(从外部应用程序填充)。任何“空白”日期在SQL中显示为1899-12-30 00:00:00.000

员工表数据显示在datagridview表单上,选中一行,然后我要执行一项检查,以测试表单中的行完成日期是否早于或等于今天,并且不等于其“空白”值,即员工离职

代码摘录:

Dim currentDateTime=DateTime.Now
Dim selectedEmpFinishDate作为日期时间=
EmployeesDataGridView.SelectedRows(0).单元格(5).值

如果选择了EmpFinishDate.CompareTo(currentDateTime),我已经听从了djv的建议(我昨晚也有同样的想法),并进行了覆盖,将这些日期值设置为NULL。然后我成功地使用了IsDBNull()。 为了澄清这些日期的来源。。。数据是从一个大型商业软件应用程序创建的另一个SQL DB导入到此数据库的。不确定他们是否希望以这种方式存储日期,或者导入是否将其设置为该“空白”默认1899日期。 它们实际上在所有表单上都显示为1899等,因此将它们重置为NULL是最好的选择。 对于其他拥有这些1899年日期的人,我建议将它们更新为空。
感谢所有回复的人,尤其是djv。

SQL中显示为1899-12-30 00:00:00.000的任何“空白”日期。
为什么?如果未定义,请确保该列允许空值。如果我是你,我会在必要时更改模式,并用NULL更新所有这些日期,确保1899不会回到那里。然后启用
选项Strict
-DGV单元格永远不会返回
日期时间
1899-12-30
似乎是一个表示未设置的神奇值,您应该能够看到
DateTime
是否小于
#1/1/1900
甚至
1/1/2001
我认为1899-12-30是VB6或VBA中的零日期。是否确实在VB.NET中工作,而不是在VB6或VBA中工作?因为在显示时将日期1899-12-30更改为00:00:00通常是VB6/VBA的事情。在比较日期时,您可以使用运算符,因此如果选择了mpfinishdate