将变量和字符串转换为datetime格式

时间:2012-10-01 22:18:17

标签: php mysql

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

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

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

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

3 个答案:

答案 0 :(得分: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 With Demo

结果:

yourDate
2012-10-01 03:00:00

答案 1 :(得分: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')");

?>

答案 2 :(得分:0)

我不知道为什么你想在SQL中做这个,这在PHP中很容易做到。

(通常最好在SQL服务器上施加尽可能小的压力,因为通常是瓶颈,加上,在SQL中使用CONCAT拼凑起来更加丑陋

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

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

有关详细信息,请参阅MySQL docs

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

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

即,让strtotime解析您的日期并处理将上午/下午转换为24小时的时间,然后使用date将其强制为正确的格式。

mysql_query("SELECT '$mysql_formatted_date' ...");