我正在寻找运行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!";
?>
答案 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,您可以用双引号替换方括号并使用正确的日期函数,但方法只是相同的