0

我目前有以下变量和格式化数据:

  • Scheduling_StartDate_Month = 10
  • Scheduling_StartDate_Day = 1
  • Scheduling_StartDate_Year = 2012
  • Scheduling_StartTime = 3:00 PM

我需要将它们组合成一个“日期时间”类型的变量“schedstart”以插入到我的数据库中,我完全迷路了。我试图研究这些问题,并找到了使用 mktime() 或 sttodate() 的建议,但我找不到任何可靠的语法指南。

如何使用 PHP 组合这些变量?

4

3 回答 3

3

您可以使用以下使用STR_TO_DATE()CONCAT()功能:

select 
  str_to_date(
    concat(Scheduling_StartDate_Year,'-',
          Scheduling_StartDate_Month, '-',
          Scheduling_StartDate_Day, ' ',
          Scheduling_StartTime), '%Y-%m-%d %h:%i') as yourDate
from yourtable

请参阅带有演示的 SQL Fiddle

结果:

yourDate
2012-10-01 03:00:00
于 2012-10-01T22:27:20.020 回答
1

您可以考虑在 PHP 上以适当的格式连接:

<?php

$dateString = $Scheduling_StartDate_Month."/".$Scheduling_StartDate_Day."/".$Scheduling_StartDate_Year." ".$Scheduling_StartTime;
$result = mysql_query("SELECT STR_TO_DATE('".$dateString."', '%m/%d/%Y %h:%i %p')");

?>
于 2012-10-01T22:29:26.513 回答
0

我不知道你到底为什么要在 SQL 中执行此操作,而在 PHP 中非常容易做到这一点。

(通常最好在 SQL 服务器上施加尽可能小的压力,因为这通常是瓶颈,另外,CONCAT在 SQL 中拼凑起来更难看)

MySQL 日期本质上只是以特定方式格式化的字符串。例如2008-12-31 23:59:59

因此,只需将您不同的日期片段并将它们填充在一起,使它们看起来像那样,然后在您的 SQL 查询中随意使用它(将其放在单引号中)。

有关更多详细信息,请参阅MySQL 文档

最简单的方法可能如下所示:

$mysql_formatted_date = date('Y-m-d H:i:s', strtotime("Scheduling_StartDate_Year-$Scheduling_StartDate_Month-$Scheduling_StartDate_Day $Scheduling_StartTime"));

即,让strtotime解析出您的日期并处理将 am/pm 转换为 24 小时制,然后用于date强制将其转换为正确的格式。

mysql_query("SELECT '$mysql_formatted_date' ...");
于 2012-10-01T22:35:21.333 回答