【发布时间】:2019-03-19 19:18:33
【问题描述】:
我的表的一个特定列是hour_init,另一列是hour_end。我正在尝试构建一个检查约束来确定 hour_init 和 hour_end 是否都遵循以下规则:
- 规则 1:格式必须为 HH:MM
- 规则 2:HH 必须小于 24
- 规则 3:MM 必须小于 59
我已经阅读和/或想出了一些方法,但我无法决定什么是“最佳实践”或理想的解决方案。
方法一:
创建具有 2 列类型为 varchar2 的表。创建一个检查约束,将每个 varchar2 拆分为子字符串(在“:”之后和之前),将子字符串转换为数字并检查它们是否遵循规则 2 和 3。我不知道这种方法的好坏。
方法二:
创建具有 2 列类型为 DATE 或 TIMESTAMP 的表。然后将这些 DATE 格式化为 HH:MM,然后检查插入的值,其小时和分钟是否遵循规则 2 和 3。
应该选择什么方法?
【问题讨论】:
-
为什么不使用 type
INTERVAL DAY TO SECOND这比你需要的要细一些,但至少它是正确输入的。然后您可以使用文字INTERVAL '09:30' HOUR TO MINUTE插入 9 小时 30 分钟(例如)