【发布时间】:2015-12-03 09:59:19
【问题描述】:
我正在经营一家大学服务台办公室,员工使用 php 表单在 MySQL 数据库中注册他们回答的查询。
基本上表单会创建一些值,这些值在 php 中存储为变量,然后保存在数据库中,如下所示:
$employeename = $_POST['employeename'];
$medium = $_POST['medium'];
$timespent = $_POST['timespent'];
$query = "INSERT INTO queries VALUES ('',now(),'$employeename','$medium','$timespent')";
mysqli_query($con,$query);
这给了我以下表格结构:
id | timestamp | employeename | medium | timespent
1 | 2015-11-30 10:52:57 | Jennifer | e-mail | 5
2 | 2015-11-30 10:55:02 | Jason | phone | 2
我想在我的 MySQL 数据库中添加一个列,用于存储保存每个查询的学年,因为在计算保存的查询数量时我将经常使用此分组。
我们的学年是 2013/2014、2014/2015、2015/2016 等。每个学年涵盖从 9 月 1 日到 8 月 31 日的期间,这意味着例如时间戳从 2015-09-01 00:00:00 到但不包括 2016-09-01 00:00:00 的所有查询都应在数据库的我的学年列中保存“2015/2016”。
我正在寻找 PHP 代码,我需要将我的 MySQL 查询中的“now()”解释为正确的学年,并将其保存到我的数据库中,最好以不需要添加以前的方式/即将学年添加到我的代码中(即,如果用户在 2020 年 9 月 1 日保存查询,脚本会自动知道将学年保存为 2020/2021)。
任何帮助将不胜感激。很抱歉没有包含任何示例代码。原因是我不知道该怎么做,因此不确定要读什么。
【问题讨论】:
-
使用 PHP 的 datetime 类会更容易,而不是基于
NOW() -
在解释时间戳后,我是否只需要创建一个变量并执行另一个插入查询:$timestampfromdb = mysqli_insert_timestamp($con);
-
不需要添加列,选择时可以在sql中用year(timestamp)导出该字段
-
我不介意这样做,但我担心当我的数据库中回答了 100,000 多个查询时它会减慢查询速度。我还假设将时间戳转换为学年的 php 代码会非常相似?
-
只需将
NOW()存储在数据库的时间戳列中。添加特定选择标准的时间是在您编写选择要处理的数据的查询时。这样,您就不会受限于可以在查询中选择的内容。例如,如果您只想知道 2014/2015 学年第一学期发生了什么,您的方式是不允许的