在某些情况下,“expiration date”列类型没有任何值时应该是什么(空白?无效的?0000-00-00?)

t3irkdon  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(504)

我有一张表格,上面列出了我在主菜单中使用的项目:
型号|显示|名称|子菜单|激活
mysql数据库:

CREATE TABLE `main_menu` (
  `model` varchar(255) NOT NULL COMMENT 'name of the model',
  `display_name` varchar(255) NOT NULL,
  `sub_menu` enum('Fruits','Vegtables','Grains','Breads','Snacks','Sweets') DEFAULT NULL,
  `active` tinyint(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

例子:

model   | display_name  | sub_menu  | active
---------------------------------------------
potato  | Potato        | Vegtables | 0
apple   | Apple         | Fruits    | 1
pumpkin | Pumpkin       | Vegtables | 1

我想给它添加一个到期日(“到期日”)。
并非所有行都有过期日期。
应该是什么类型的 exp_date ? 显然是“约会”。。但如果某一行没有有效期,什么是“良好实践”?插入 NULL ? 插入 0000-00-0 ?

model   | display_name  | sub_menu  | active    | exp_date
--------------------------------------------------------------
potato  | Potato        | Vegtables | 0         | NULL
apple   | Apple         | Fruits    | 1         | NULL
pumpkin | Pumpkin       | Vegtables | 1         | 2019-03-01

使用mysql 5.7,可能会迁移到新的8版本。我只是想确保我做得很好。我记得(不确定从哪里)日期类型和日期值在一个问题,有一个适当的方法来做这件事。

slwdgvem

slwdgvem1#

我不认为使用 NULL 当到期日期未知时作为占位符。例如,您希望查找所有尚未过期的记录。治疗 NULL 由于尚未过期,我们可以编写以下查询:

SELECT model, display_name, sub_menu, active, exp_date
FROM main_menu
WHERE exp_date > NOW() OR exp_date IS NULL;
kuuvgm7e

kuuvgm7e2#

使用 NULL 如果你还不知道实验日期和使用方法 9999-12-31 (日期支持的最大值)如果行未过期。

相关问题