我可以将DB2中的日期字段设置为null吗

我可以将DB2中的日期字段设置为null吗,db2,Db2,当我将日期字段设置为null时,为什么DB2会在日期字段中写入01/01/0001 我可以将该字段设置为空吗。当db2将其设置为01/01/0001时,我的ado记录集会爆炸,因为它不是一个有效的日期 我做错什么了吗?当然可以将日期列设置为空值。你是怎么做到的 要么是您使用的客户机搞乱了您,要么是表中有一个触发器将该列中的NULL值更改为您看到的值 是的,您可以在日期列中插入空值。下面是用于插入空值的语法(取决于版本)。时间戳是列类型,因此可以将其与日期交换。根据您的DB2版本,您可能有不同的方

当我将日期字段设置为null时,为什么DB2会在日期字段中写入01/01/0001

我可以将该字段设置为空吗。当db2将其设置为01/01/0001时,我的ado记录集会爆炸,因为它不是一个有效的日期


我做错什么了吗?

当然可以将日期列设置为空值。你是怎么做到的

要么是您使用的客户机搞乱了您,要么是表中有一个触发器将该列中的NULL值更改为您看到的值

  • 是的,您可以在日期列中插入空值。下面是用于插入空值的语法(取决于版本)。时间戳是列类型,因此可以将其与日期交换。根据您的DB2版本,您可能有不同的方法来执行此操作。如果datetime字段的字段规范未设置为允许空值,则此操作将不起作用

    插入到[表名](col1,col2,col3)中,选择Value1,Value2, 从[源表]强制转换(空为时间戳)

  • 您看到01/01/0001的原因是,DB2正在尝试将null转换为值,而01/01/0001是日期字段的默认值


  • 您使用的是什么版本的DB2?只要date字段可以为null,您就可以将date字段设置为null。该字段可能被定义为“Not null”呃,不。如果他出现错误,就不会在表中插入任何内容。虽然这是插入空值的正确语法,但这听起来不像是他的实际问题(即,如果从ORM插入空值,则通常负责转换)。有些版本的DB2也不能隐式地转换/比较日期和时间戳(!)——可能是为了避免本地时间和全局时间的问题;如果要指定时间戳,为什么不指定日期?我们应该得到更多的信息,但是注释可能是正确的——“定义为
    非NULL
    ”@Clockwork Muse您不知道他的sql产生错误的确切原因,因为他没有提供他正在使用的内容。我只是简单地回答了他的问题,这取决于他的DB2/AS400版本。我还更新了我的答案,完全回答了他的所有问题。