为什么DB2在日期字段中写入01/01/0001时,我将其设置为空?我可以在DB2中将日期字段设置为空
我可以将该字段设置为NULL。当db2将它设置为01/01/0001时,我的ado记录集爆炸,因为它不是有效的日期。
我做错了什么?
为什么DB2在日期字段中写入01/01/0001时,我将其设置为空?我可以在DB2中将日期字段设置为空
我可以将该字段设置为NULL。当db2将它设置为01/01/0001时,我的ado记录集爆炸,因为它不是有效的日期。
我做错了什么?
您当然可以将日期列设置为NULL值。 你怎么办?
您使用的客户端正在与您搞砸,或者表中有一个触发器,将该列中的NULL值更改为您所看到的值。
是的,你可以将空值插入日期列。下面是插入空值的语法(取决于版本)。时间戳是列类型,因此您可以使用日期进行交换。根据你的DB2版本,你可能有不同的方法来完成它。如果datetime字段的字段规范未设置为允许空值,这将不起作用。
INSERT INTO表名(COL1,COL2,COL3)选择值1,值, CAST(NULL作为时间戳)FROM [源表]
你看到01/01/0001原因是因为DB2试图将null转换为值,而01/01/0001是日期字段的默认值。
呃,没有。如果他得到**错误**,则不会在表中插入_anything_。虽然这是插入空值的正确语法,但听起来并不像他的实际问题(即,如果它是从ORM插入的,通常需要处理该转换)。某些版本的DB2也无法隐式地投射/比较日期和时间戳(!) - 可能会避免本地时间和全球时间的问题;如果你指定时间戳,为什么不反对呢?我们应该获得更多信息,但评论可能是正确的 - “定义为NOT NULL”。 –
@ Clockwork-Muse你不知道他的SQL产生错误的确切原因,因为他没有提供他正在使用的东西。我只是回答了他的问题,这取决于他的DB2/AS400版本将工作得很好。我也更新了我的答案,以完全回答他的所有问题。 – Mike
您正在使用哪个版本的DB2?只要日期字段可以为空,您可以将日期字段设置为空。 –
该字段可能被定义为“不为空” –