MySQL - 单个DATETIME还是单独的DATE和TIME列?

时间:2012-08-16 22:53:50

标签: php mysql

在我的应用程序中,我正在开发一种用于创建“提醒”的功能。

提醒有日期和时间。在我的应用程序中,我有一个表单来创建/编辑提醒 - 这有两个单独的字段来输入这些信息:

<input type="text" name="date"></input> <!-- datepicker plugin -->

<input type="text" name="time"></input> <!-- timepicker plugin -->

现在作为一项规则,每当我需要存储日期/时间时,我总是使用DATETIME列,但这是我第一次存储用户输入的日期/时间。

我认为最好有单独的DATE和TIME列,因为在我的应用程序中插入/检索数据会更容易。例如,我不必将两个输入字段中的值组合在一起以创建要插入数据库的单个值。同样,我不必将单个值拆分为两个值,以便在编辑模式下填充表单字段。

但另一方面,如果我使用一列,查询表会不会更容易?你觉得怎么样?

6 个答案:

答案 0 :(得分:4)

你应该自下而上建立(数据库在底部)。不要考虑应用程序,只考虑数据库。现在,在数据库级别有意义。日期时间。

因此,您需要在应用程序级别编写额外的代码。

答案 1 :(得分:2)

请看到它

将时间戳添加到jQuery UI Datepicker

http://trentrichardson.com/examples/timepicker/

根据您的mysql格式转换您的日期时间并存储

$mydate = strtotime($_POST['date']);
$myfinaldate = date("d-m-y", $mydate);

$mytime = strtotime($_POST['time']);
$myfinaltime = date("H:i:s", $mytime);

答案 2 :(得分:0)

分隔列是不合逻辑的。您可以使用timestamp作为数据类型,并且可以使用mktime函数轻松地解析日期和时间。

答案 3 :(得分:0)

这取决于您正在创建的系统。 如果您想存储超过2038年的日期,我会将日期时间和时间分开存储。

答案 4 :(得分:0)

如果您正在开发预订应用程序,并且在一端您需要知道为用户安排约会的日期和时间,并且在另一端,您需要将用户与医生日程安排相匹配。您将医生的时间表保存在数据库中,并且您需要知道(其他事情)何时可以获得医生(在哪几天),以及在什么时间。让我们忘记一下什么时候,关注第一时间...... 您需要制定可编程的时间表,以便在您知道医生在特定日历年中工作6个月时。 (1月 - 6月),他或她可以工作(9-5 M,W,Fr)和(10-3 T,Th)。周六和周日医生都没了。因此,您需要开发一个表来保存每日时间表,其中包含2列,以保存每周的每一天的每日开始时间和每日结束时间。总共14列,主键和可能的辅助键。所以现在是一些日期算术的时间(这是它变得毛茸茸的地方: - | ...

你可以说我的查询:(mySQL)

选择这样的......

其中form.theapptdate时间介于doctorschedule_startime_tuesdaydoctorschedule_endime_tuesday

之间

并且这将匹配以查看您的日期时间是否在您的医生检查时间和结束时间的日期范围内...但是,如果您需要的只是时间?

如果将时间值存储为日期时间

日期算术是否仍然有效

换句话说,如果我的01:00:00作为我的doctorschedule_startime,这是我的算术工作的合法日期值,还是会强迫日期部分。

也许我应该将时间存储为varchar,并将其转换为合适的日期时间值并在代码中执行算术而不是查询????

答案 5 :(得分:0)

我想到一个关于何时拆分日期和时间的示例:

您可能希望将DATE用作唯一索引的一部分,以便每个日期只允许用户向某个表中添加1条记录,但是您仍然想知道他TIME添加了它,因此您将DATETIME分开。