使用PHP命名当前日期的数据库表

时间:2012-01-09 08:02:55

标签: php mysql sql

我正在寻找运行mysql_query(),它允许我在数据库中创建一个新表,并根据当前日期和时间命名。

示例:创建一个名为2012-01-09-03-00-00的表,或者沿着这些行创建的表。

我知道这不是一种最佳的处理方式,但最终我将把这个表上的数据转储到一个更大的数据库中。

我尝试过代码:

<?php
$date = date('YmdHis', time()-(3600*5));
$exportSQL = "CREATE TABLE $date(
FirstName varchar(15)
)";
mysql_select_db($database);
mysql_query($exportSQL) or die (mysql_error());
echo "Table created!";
?>

但这没有任何好处。请提前帮助和感谢。

编辑:这已经解决了。代码工作应该看起来像这样:

<?php
$date = date('YmdHis', time()-(3600*5));
$exportSQL = "CREATE TABLE `$date`(
FirstName varchar(15)
)";
mysql_select_db($database);
mysql_query($exportSQL) or die (mysql_error());
echo "Table created!";
?>

1 个答案:

答案 0 :(得分:2)

除非是非常奇怪的设计,如果你想以这种方式命名表格 - 把它的名字放在方括号中,如下所示:

CREATE TABLE [2012-01-09 12:20:15.010] (your columns)

这意味着您应该具有表 BEFORE 组成查询的名称, OR 您必须使用动态sql,如下所示:

DECLARE @sql NVARCHAR(MAX)
SET @sql = N'CREATE TABLE['+
  CAST(DATEPART(year, GETDATE()) AS NVARCHAR)+N'-'+
  CAST(DATEPART(month, GETDATE()) AS NVARCHAR)+N'-'+
  CAST(DATEPART(day, GETDATE()) AS NVARCHAR)+N'-'+
  CAST(DATEPART(hour, GETDATE()) AS NVARCHAR)+N'-'+
  CAST(DATEPART(minute, GETDATE()) AS NVARCHAR)+N'-'+
  CAST(DATEPART(second, GETDATE()) AS NVARCHAR)+
  N'] (FirstName varchar(15))'

EXEC(@sql)

所提出的语法适用于 sql server ,因此由于符合sql,您可以用双引号替换方括号并使用正确的日期函数,但方法只是相同的