MySQL - 单个日期时间或单独的日期和时间列


MySQL - Single DATETIME or Separate DATE and TIME Columns?

在我的应用程序中,我正在开发一个创建"提醒"的功能。

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

<input type="text" name="date"></input> <!-- datepicker plugin -->
<input type="text" name="time"></input> <!-- timepicker plugin -->
现在,作为

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

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

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

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

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

请看

将时间选取器添加到 jQuery UI 日期选取器

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);

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

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

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

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

选择某某...

其中 form.theapptdatetime 介于 doctorschedule_startime_tuesdaydoctorschedule_endime_tuesday 之间

这将进行匹配,以查看您的日期时间是否在您的医生时间表明星时间和结束时间的日期范围内...... 但是,如果您只需要时间呢?

如果时间值存储为日期时间,日期算术是否仍然有效???

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

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

我想

到了一个例子,关于何时划分日期和时间:

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