如何正确定义尚未达到完成日期

时间:2016-12-13 12:39:41

标签: mysql database

以经验记录为例。

我于2016-05-12开始在Google工作

started_at = 2016-05-12

我目前在Google工作

finished_at = null

在数据库上定义尚未达到日期的正确方法是什么?

我只是通过询问is null来完成这个,但我觉得这是一个非常糟糕的方法,但是,另一方面,添加另一个列(isFinished)只是为了存储真或假看起来很糟糕我也是......所以......

你是怎么做到的?

3 个答案:

答案 0 :(得分:1)

你的方法对我来说很好。如果它是NULL那么这意味着你还在滚动。除此之外,您还可以设置bit字段,例如Isfinished,可以设置为true false

答案 1 :(得分:1)

许多组织使用不同的方式来存储“未来未知日期”,它通常以您最喜欢的方式进行:

  • 使用您的方式,存储NULL值以表示未完成的日期。
  • 使用默认的“开放结束日期”,例如31-dec-2999
  • 添加指示列,指示它是否为有效记录{。{1}}。

答案 2 :(得分:1)

正如戈登在评论中提到的,使用NULL表示未知日期是完全正确的。但是,如果您希望该列可能包含将来的日期,并且您想要检查未知日期或尚未发生的日期,那么您将需要执行两次检查。

SELECT *
FROM job_history jh
WHERE jh.finish_date is null or jh.finish_date < CURDATE();