【发布时间】:2020-09-08 21:17:05
【问题描述】:
我有什么:
我有一个动态加载用户任务的 php - mysql - jquery/ajax 调度程序。为了显示用户任务的开始和结束时间,我将值作为unix timestamp 存储在我的MYSQl database 中。
例如:
Task start: 1599026400 = 2020-09-02 08:00:00
Task end: 1599057000 = 2020-09-02 16:30:00
为了获取数据库中一个月的所有任务,我需要该特定月份的最小和最大 timestamp。
Min date: 1598911200 = 2020-09-01 00:00:00
Max date: 1601503199 = 2020-09-30 23:59:59
问题: 我正在寻找最干净/最快速的方式来获取这些数据。
$result = time(); // current timestamp (is created by a jquery date-picker)
$time = strtotime(date('Y-m-d', $result)); // create a new date to remove the original time (H:i:s)
echo strtotime(date('Y-m-01 H:i:s', $time)); // display first day of month, time = 00:00:00
echo strtotime(date('Y-m-t H:i:s', $time)) + 86399; // display last day of month (add 86399 seconds = 23:59:59)
有没有更有效的方法来达到这个结果?
【问题讨论】:
-
您所指的这个问题是关于从时间戳中减去 5-10 分钟。提到的问题也是关于 MYSQL 而不是 PHP。
-
在获取早于“month before”和更年轻的“month after”的数据时,您是否对查询进行了计时。这样你就不需要任何 php 计算时间戳了?
-
将时间存储为 DateTime(Mysql 类型)不是更灵活吗?这些是人类可读的,您的查询可以以更全面的方式构建:WHERE yourColumn BETWEEN '2020-09-01' AND '2020-10-01.仅提取 yourColumn 引用星期二的那些记录甚至会很简单。 Unix时间戳会给你带来很多工作。当然,您的问题与此无关,但在某些时候您可能会在数据上遇到此类问题,然后转换可能为时已晚