2013-11-29 42 views
1

我正在使用MYSQL数据库,并想知道这是一个很好的做法。出生日期保存到MYSQL DB的时间戳或日期列类型

方式1 - 在DB中使用列类型作为时间戳。即将包含值如2012-11-13 00:00:00 方式2 - 使用列作为日期。即在数据库中将包含像2012-11-13这样的值。

这里的问题是,存储DOB。我们是否真的需要时间戳作为列类型?在我看来,DOB也不需要时间部分(00:00:00)。

它应该是时间戳,因为我们可以将该值存储为隐藏状态,因此即使有人看到数据库时,也不会有人看到它。要查看,我们必须在php中使用strtotime()。

请让我知道在数据库中存储DOB的正确方法。

+1

有V WE需要时间DOB罕见的情况下,通常是'date'类型是足够的需求 –

+1

如果您需要只有**出生日期**而不是出生日期和时间**在您的应用程序中,那么答案很明显 - 使用'DATE'作为数据类型。唯一不错的做法是不使用带时间部分的数据类型,因为实际上并没有使用它,因为在大多数情况下,查询**正确**与'timestamp' /'datetime'相比要棘手得多。 – peterm

+1

它真的取决于你的应用程序需要什么。如果你的应用程序(前端)不关心'timestamp',那么只用'date'作为一个好的数据库管理员,如果不需要时间,就尽量保留需要的数据,那么为什么使用'时间戳' – Ashish

回答

6

我建议使用DATE。

TIMESTAMP的'1970-01-01 00:00:01'到'2038-01-19 03:14:07'(UTC)的范围,所以在大多数情况下它不适合DOB。

可以使用DATETIME,但您应该问自己:您是否希望用户填写出生时间?如果没有 - 使用DATE。

通常这不是什么大不了的事,但你也可以考虑所需的存储:

DATE:  3 bytes 
TIMESTAMP: 4 bytes 
DATETIME: 8 bytes 
+0

非常感谢... – dev1234