php - MySQL时间/日期计算

标签 php mysql sql date time

首先,数据库中的一个条目:

enter image description here

我有一个输入表单,其中包含工作日的开始日期、开始和结束时间(以小时和分钟为单位)以及以分钟为单位的午休时间(在示例中 dato=date, modetime=start hour, modeminut=start minute, fyrtime =结束时间,fyrminut =结束分钟)。我需要做几个计算:

  • 首先计算日期,开始小时和分钟到日期时间字段modetid。
  • 对结束时间和分钟进行类似的计算,但如果结束时间小于开始时间,则将日期提前一天(我们称之为 fyrtid)
  • 最后计算 fyrtid 和 modetid 减去暂停分钟数的差值。

是否可以直接在数据库中自动完成(如果是,如何),或者我是否需要一些 PHP 来完成(如果是,如何)?

我知道这是一项艰巨的任务,但我无法找到很多关于日期/时间计算的信息,而这些信息对我的知识水平很低。也欢迎任何有关 MySQL 或 PHP 中日期/时间计算的综合指南的链接。

最佳答案

我建议你使用 php 函数 time(),它基于 unix 时间戳(就像 Mysql 中的 UNIX_TIMESTAMP())unix 时间是这样的:1307387678。 在您的表格中使用日历作为开始时间和结束时间。 放置一个客户可以选择一天中的时间(小时和分钟)的设施,然后通过 strtotime() 将这些文件转换为 unix 时间戳,如下面的代码(将日期格式设置为 mm/dd/yyyy):

$startdate = strtotime ( "$_POST['calender_start'] $_POST['hour_start']:$_POST['minutes_start']"  );
$enddate = strtotime ( "$_POST['calender_end'] $_POST['hour_end']:$_POST['minutes_end']"  );

将您的数据库表字段更改为:cpr、startDate、endDate、pause、basked、......

它非常灵活。 当您想获取特殊记录时,您可以通过此 sql 获取行:

SELECT ...... FROM [TABLE_NAME] WHERE [VALUE] BETWEEN startDate AND endDate 

希望对你有用

关于php - MySQL时间/日期计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6509619/

相关文章:

mysql - 如何从开始年份和结束年份获取年份列表

php - 单击链接时将数组中的项目存储在 SESSION 中

php - 如何修复 “Object of class WP_Term could not be converted to string”?

php - php中如何减去两个相同数组的值

java - hibernate 生成的错误 sql 查询

mysql - 在同一个 JOIN 中选择同一个表中的多行

php - 如何使用 PHP 脚本测试 logstash

mysql - 在mysql中搜索电话号码

sql - 如何在 JDBC sql 中自动增加主键

sql - 在 SQL Server 上调试复杂的 T-SQL 过程