2009-12-13 105 views
1

我正在研究一个需要将成员生日插入MySQL数据库的项目。但我很困惑。其实我使用它像:在数据库中记录成员生日的正确方法是什么?

INT(10)

所以我如更改格式“27/06/1960”使用PHP unix时间并使用函数date()来显示生日。有没有更好的解决方案?有没有什么好的资源可以推荐阅读“DATE,DATETIME,TIMESTAMP”?

谢谢。

+0

谢谢你们,我要开始阅读有关DATETIME因为它在大项目中使用。 – MoeAmine 2009-12-13 14:16:49

+0

随时接受答案,回答你的问题,并upvote那些你发现“辉煌”:) – cherouvim 2009-12-13 15:25:35

+0

@cherouvim 是的,当然可以。我接受了它,但我无法赞成它 - “投票要求15声望” – MoeAmine 2009-12-14 04:29:31

回答

2

找出某人生日的最快方法是使用2或3个独立的INT列,并可能添加一列以将整个事件存储为DATETIME。虽然你不正常使用整数也不多列表示日期,请记住,如果你在这个表有很多行,做这样的事情

SELECT * FROM people WHERE birthday LIKE '%-12-24'; 

是不是很有效。它在较小的数据集中工作正常,但如果我们开始进入大型数据集(取决于您的硬件),则速度会变慢。有时你需要以不同寻常的方式存储数据,以保证系统的高效性,通过多达4组日期列(月份,日期,年份以及将整件事物作为日期戳存储),您浪费的少量HD空间将带来回报在速度。

这样做,你可以简单地做:

SELECT * FROM people WHERE birth_month=12 AND birth_day=24 
+0

辉煌的评论!谢谢。去年我使用它,但我认为它不是专业的,但在阅读你的解释之后,我会认真思考它。 – MoeAmine 2009-12-13 15:02:37

9

我会从DATETIME manual page for your database开始。一般来说,如果一个数据库有一个特定的列类型,专门为您计划在该列中存储的数据类型而设计,那么使用它通常是一个好主意。它不仅可以更准确地了解列中存储的内容,还可以让您编写更强大的查询,并让数据库引擎为您优化这些查询。

-1

没有正确和没有错误的决定。 只有一种你最喜欢的方式,这是正确的决定。

我真的可以说,没关系如何设计你的数据库和代码,只要你按照自己的设计。 所以如果你使用特殊的日期模式,而不是通过代码使用它,所以你不会与成千上万的转换器斗争。

例如, HTML表单模式:DD/MM/YYYY

PHP模式(exlpode( '/',$日期)): DD:MM:YYYY

DB模式:DD-MM-YYYY

+0

如何存储数据可能会对数据库的性能产生巨大影响,我不会同意没有正确和错误的决定。在这种情况下@Dav有正确的答案 – Paul 2009-12-13 13:38:24

1

使用DATE列。 MySQL预计输入为“YYYY-MM-DD”并输出这样的值。

尚未(尚未)由用户提供的日期可能被编码为NULL列。虽然你可能不需要“NULL”需要的额外位,但你甚至可以为此写入特殊值“0000-00-00”。

相关问题