我正在建立一个任务列表。我的数据库中有两个表。模板和任务 模板结构如此
id, task_name, function, text, days_to_action
1, Touch Base, call, Call to touch base, 7
任务表的结构如下:
id, task_name, function, text, due_date
1, Touch Base, call, Call to touch base, 02:06:2016
截止日期是用这个公式计算的($ set_days抓住了days_to_action):
$dueDate = date('d:m:Y', strtotime('+'.$set_days.' days'));
如您所见,我使用的是澳大利亚日期格式。为了做正确的事,我把它包括在我的所有页面的顶部:
date_default_timezone_set('Australia/Brisbane');
在我的页面上,我正在尝试显示今天到期或过期的任务。
$today = date('d:m:Y');
$task_list = $mysqli->query("SELECT * FROM task WHERE id='$linkid' && time_due <= '$today' ORDER BY datetime DESC");
我发现的错误是当这些日子翻到新的一个月(如上面的示例)时,我的代码认为02/06/2016(年/月/日)是一个在2017年5月28日之前的日期
数据库只能使用美国格式吗?有没有选择切换到澳大利亚?我缺少一步吗? 乙
答案 0 :(得分:1)
通常,为了存储日期值,应使用DATE数据类型,因为它便于维护和数据检索。
MySQL在&#39; YYYY-MM-DD&#39;中检索并显示DATE值。格式。
您可以在PHP中轻松更改应用程序级别的格式,用于显示或其他操作目的,但您应始终使用DATE数据类型推送/拉取MySQL中的记录,即&#39; YYYY-MM-DD&#39;。
您可以使用以下命令更改数据类型:
ALTER TABLE task CHANGE due_date due_date DATE
参考