【发布时间】:2013-06-13 15:24:47
【问题描述】:
我有两个选项可以在 MySQL 中存储 DOB(出生日期)。以下哪种方法更好?
在 MySQL 中使用Date Type 存储 DOB,
或
将 DOB 值分别存储在不同字段中,例如一个字段中的日、另一个字段中的月份和另一个字段中的年份?
如果客户端只想显示月份和日期,如果我们将DOB存储在MySQL的日期类型中,是否可以检索它?
【问题讨论】:
我有两个选项可以在 MySQL 中存储 DOB(出生日期)。以下哪种方法更好?
在 MySQL 中使用Date Type 存储 DOB,
或
将 DOB 值分别存储在不同字段中,例如一个字段中的日、另一个字段中的月份和另一个字段中的年份?
如果客户端只想显示月份和日期,如果我们将DOB存储在MySQL的日期类型中,是否可以检索它?
【问题讨论】:
我会说总是将日期存储为DATE 类型。 MySQL 有一个 date functions 的主机,它们会计算时间跨度、格式化日期,并为你提取日期片段。
例如,如果您只需要月份,只需 MONTH(DOB)。
如果您需要更有说服力,请查看 StackOverflow,您会看到数百个(如果不是数千个)由于日期值存储为字符串而遇到问题的人提出的问题。
【讨论】:
DATE 类型用于具有日期部分但没有时间部分的值。 MySQL 以 'YYYY-MM-DD' 格式检索和显示 DATE 值。支持的范围是“1000-01-01”到“9999-12-31”。
您可以使用一些Date Functions查询:
SELECT *
FROM table
WHERE
MONTH(date_column) = desired_month AND
DAY(date_column) = desired_day
【讨论】:
日期逻辑很棘手。如果您可以使用已经调试过的内置类型,则应该使用它。从日期列中检索月份非常简单。
【讨论】: