'expiration date' 列类型在某些情况下没有任何值应该是什么? (空白?空?0000-00-00?)
What should be an 'expiration date' column type when in some cases it doesn't have any value? (blank? null? 0000-00-00?)
我有一个 table 说明我在主菜单中使用的项目:
型号 | display_name | sub_menu |活跃
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")。
- 并非所有行都有到期日期。
exp_date
的类型应该是什么?显然 "Date".. 但如果某行没有 exp_date,那么什么是 "good practice"?插入 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 版本。我只是想确保我做的正确。我记得(不确定从哪里)日期类型和日期值在一个问题中,并且有一种正确的方法来做到这一点。
我认为在不知道到期日期时使用 NULL
作为占位符没有任何问题。例如,您要查找所有尚未过期的记录。将 NULL
视为尚未过期,我们可以编写以下查询:
SELECT model, display_name, sub_menu, active, exp_date
FROM main_menu
WHERE exp_date > NOW() OR exp_date IS NULL;
如果您还不知道 exp_date,则使用 NULL
;如果该行未过期,则使用 9999-12-31
(日期的最大支持值)。
我有一个 table 说明我在主菜单中使用的项目:
型号 | display_name | sub_menu |活跃
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")。
- 并非所有行都有到期日期。
exp_date
的类型应该是什么?显然 "Date".. 但如果某行没有 exp_date,那么什么是 "good practice"?插入 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 版本。我只是想确保我做的正确。我记得(不确定从哪里)日期类型和日期值在一个问题中,并且有一种正确的方法来做到这一点。
我认为在不知道到期日期时使用 NULL
作为占位符没有任何问题。例如,您要查找所有尚未过期的记录。将 NULL
视为尚未过期,我们可以编写以下查询:
SELECT model, display_name, sub_menu, active, exp_date
FROM main_menu
WHERE exp_date > NOW() OR exp_date IS NULL;
如果您还不知道 exp_date,则使用 NULL
;如果该行未过期,则使用 9999-12-31
(日期的最大支持值)。