将日期存储在三列中的mysql或仅使用一列是否更好?哪一个更快。另外,如果我只想用格式为dd / mm / yy的今天日期插入,我该怎么做。以及如何选择。另外,让我们说如果我想获得所有周三的结果,我该怎么做,或者让我们说所有月份和年份中的第25个日期,我该怎么做。
谢谢大家。
我在Apache和Mysql中使用PHP。
使用我提议的结构有什么缺点。我可以通过使用日期表轻松获得所有25日,我可以使用其他列数天来获取所有日期。我提出的解决方案与使用DATE表之间的速度方面有多大差异?
答案 0 :(得分:5)
您需要使用正确的列类型,例如DATE
,DATETIME
或TIMESTAMP
,具体取决于您的需求。它们专门用于处理日期,并且可以更轻松地执行难以在3个单独的列上执行的其他功能(添加,比较等)。
阅读this了解详情。
DAYOFWEEK(date)
会为您提供当天的数字表示。在你的情况下,4 =星期三。 DAYOFMONTH(date)
将用于查找该月的所有第25天。
DAYNAME(date)
将返回日期工作日的名称
答案 1 :(得分:2)
另外,如果我只想用格式为dd / mm / yy的今天日期插入,我该怎么做。
Well it depends on the format your date is passed in through your
form but you are going to want to store your date in YYYY-mm-dd format.
INSERT INTO my_table (timefieldname) VALUES ( '$date' );
以及如何选择。
SELECT timefieldname FROM my_table;
//or you can format the date - this will give you month/day/year 01/01/2012
SELECT DATE_FORMAT(timefieldname, '%m/%d/%Y') FROM my_table;
另外,让我们说如果我想获得所有星期三的结果,
SELECT timefieldname FROM my_table WHERE DAYNAME(timefieldname) = 'Wednesday';
我该怎么做或者说所有月份和年份中的第25个日期,我该怎么做。
SELECT timefieldname FROM my_table WHERE DAY(timefieldname) = '25';
答案 2 :(得分:0)
你可以自由地从你的代码库中传递日期,并让mysql为你插入它们,只要它们是时间戳:
ALTER TABLE tablename ADD `timefieldname` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;
速度提升不是很大,但它确实减少了编码和验证传递给数据库的变量的需求。