MySQL时间/日期计算

Posted

技术标签:

【中文标题】MySQL时间/日期计算【英文标题】:MySQL time/date calculation 【发布时间】:2011-09-24 11:24:25 【问题描述】:

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

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

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

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

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

【问题讨论】:

您使用的是什么版本的 phpmyadmin?比我的好 我建议在 MySQL 中使用 datetime 而不是 date。这将允许您将所有数据存储在一个字段中,并使您的计算更加容易,因为 PHP 和 MySQL 有多种方法来计算以及针对完整日期时间的差异、加法、减法等。 同意 Mikecito mysql 有日期时间字段是有原因的。分别存储分钟和小时以及其他内容使得您无法使用 MySQL 日期时间函数,并且使 PHP 端计算更加复杂。 yes123:3.4.0 顺便说一句:任何人都可以真正看到图片中的任何东西。我感谢将图片放在帖子中的人,但我不确定它是否比链接的完整版本更好:dl.dropbox.com/u/1624676/mysql.png 好的,我在前进。如果我希望我的用户有单独的小时和分钟输入字段,我可以在保存到数据库时以某种方式组合这些字段吗?例如,我可以修改 dato 字段(以及如何修改),因此它包括小时和分钟: mysql_real_escape_string(YDFLValue($_SESSION['form']['item_10'])) 。 "', dato = '" (开始时间是 item_2,开始分钟是 item_3) 【参考方案1】:

我建议你通过 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 几乎一无所知。我正在尝试破解 Rapidweaver 中的自动表单生成器,所以我可能到处都弄错了语法。 ...把东西放在错误的地方。这是我的 hack:konferencer.nu/example.txt

以上是关于MySQL时间/日期计算的主要内容,如果未能解决你的问题,请参考以下文章

mysql: 如何计算指定日期到当前日期之间的天数

MySQL时间/日期计算

如何使用mysql计算两个日期之间的时间差

MySQL计算当前连续日期的连续日期

如何将日期字符串转换为 mysql 日期格式以使用 mysql 查询计算日期差异

在MYSQL里,如何计算两个日期间的时间差,并已年月形式显示。