1

我有这个表设备活动表

CREATE TABLE EqpActivityTBL
(
    EqpAct_ID              INT PRIMARY KEY IDENTITY(1, 1),
    EqpAct_BorrowDateTime  DATETIME,
    EqpAct_ReturnDateTime  DATETIME,
    EqpAct_Room            VARCHAR(50),
    SysUser_ID             INT FOREIGN KEY REFERENCES SysUserTBL,
    DeptMember_ID          INT FOREIGN KEY REFERENCES DeptMemberTBL,
    Eqp_ID                 INT FOREIGN KEY REFERENCES EqpTBL,
    EqpAct_Status          VARCHAR(50)
)

如您所见,我有一个 EqpAct_ReturnDate 列。一旦设备被退回,它将具有日期值。但是如果它没有被归还或者可能被破坏或者它可能发生了一些不好的事情(也许将它发送到黑洞),我可以在该列中插入一个 NULL 值吗?无论如何,它有一个日期时间数据类型。我试图在这里表明某些东西未能返回。我正在尽力避免其他数据类型的 NULL 值。

底线是:在 datetime 上有一个 NULL 值可以吗?

提前致谢

4

4 回答 4

1

是的,这很好用。空值比使用某些魔术日期值更好地表示缺失值。

使用可以处理 null 的字段的性能可能会稍低,因此对于不应为 null 的字段,您应该禁止它。

于 2013-01-16T08:38:36.647 回答
0

有空值很好,但它会增加代码开销(用于检查空值)......或者,您可以保留一个默认值,如 01-01-1900。

于 2013-01-16T08:45:48.723 回答
0

答案是肯定的,您的日期时间格式可以允许为空

只是您需要编写一些额外的代码来检查 null(以避免 null 引用错误)。相反,您可以将其保留为默认值,就像它需要像 19 : 00 : 00 (或其他任何东西)这样的东西,这样您就知道它是默认值。这里不需要解析。

于 2013-01-16T11:23:09.177 回答
0

我问:DATETIME 是一个 8 字节的数据类型。您可以使该列可为空,但它是固定宽度的数据类型。不是吗?
NULL 值仍将占用 8 个字节。

于 2021-08-23T17:14:51.977 回答