Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们可以在MySQL的表名中创建一个带有时间戳后缀的表吗_Mysql_Sql - Fatal编程技术网

我们可以在MySQL的表名中创建一个带有时间戳后缀的表吗

我们可以在MySQL的表名中创建一个带有时间戳后缀的表吗,mysql,sql,Mysql,Sql,我试图在MySQL中创建一个表,它需要在表名中添加时间戳后缀。我正在尝试使用下面的SQL命令来实现同样的效果 尝试1创建表somename-NOW()(id integer,title varchar(100)) 尝试2创建表somename-@NOW()(id integer,title varchar(100)) 上述命令对我不起作用 谢谢你使用同样的方法 注意:使用倒勾确认它是否为有效标识符。另外,如果您只使用NOW()它将返回YYYY-MM-DD HH:ii:ss,日期和时间之间有一个空

我试图在MySQL中创建一个表,它需要在表名中添加时间戳后缀。我正在尝试使用下面的SQL命令来实现同样的效果

尝试1<代码>创建表somename-NOW()(id integer,title varchar(100))

尝试2<代码>创建表somename-@NOW()(id integer,title varchar(100))

上述命令对我不起作用

谢谢你

使用同样的方法

注意:使用
倒勾
确认它是否为有效标识符。另外,如果您只使用
NOW()
它将返回
YYYY-MM-DD HH:ii:ss
,日期和时间之间有一个空格,这对于任何查询都是一个问题,因此您可以使用
date\u format
函数以友好的名称格式化它

SET @s:= CONCAT('create table `somename_', DATE_FORMAT(NOW(), '%y_%m_%dt%H_%i_%s'), '` (id integer, title varchar(100))');
PREPARE stmt3 FROM @s;
EXECUTE stmt3;
DEALLOCATE PREPARE stmt3;
用于相同的目的

注意:使用
倒勾
确认它是否为有效标识符。另外,如果您只使用
NOW()
它将返回
YYYY-MM-DD HH:ii:ss
,日期和时间之间有一个空格,这对于任何查询都是一个问题,因此您可以使用
date\u format
函数以友好的名称格式化它

SET @s:= CONCAT('create table `somename_', DATE_FORMAT(NOW(), '%y_%m_%dt%H_%i_%s'), '` (id integer, title varchar(100))');
PREPARE stmt3 FROM @s;
EXECUTE stmt3;
DEALLOCATE PREPARE stmt3;
这似乎是个非常糟糕的主意。我建议您在一个表中插入一个附加列:

create table somename (
    id integer,
    title varchar(100),
    loadtime datetime default now(),
    key (loadtime, id)
);
然后可以加载到此表中,并使用
loadtime
列分隔批次。其他功能,如分区,也可能有帮助。

这似乎是一个非常糟糕的主意。我建议您在一个表中插入一个附加列:

create table somename (
    id integer,
    title varchar(100),
    loadtime datetime default now(),
    key (loadtime, id)
);

然后可以加载到此表中,并使用
loadtime
列分隔批次。其他功能,如分区,也可能有帮助。

您可以使用
prepared语句
因为我是在工作台上做这件事的,我只能使用命令,没有代码涉及任何其他内容。标识符名称中的负号无效,除非勾选。我不知道您的用例是什么,但您可能想看看。您想要实现的模式往往很难维护。这听起来是一个非常糟糕的主意。有一种罕见的情况是,我复制了一张带有时间戳的表格进行分析。但是,这些表通常不是在生产环境中创建的,也不是定期创建的。您可以使用
prepared语句
,因为我是在工作台上创建的,我只能使用命令,没有代码涉及任何其他内容。标识符名称中的负号无效,除非勾选。我不知道您的用例是什么,但您可能想看看。您想要实现的模式往往很难维护。这听起来是一个非常糟糕的主意。有一种罕见的情况是,我复制了一张带有时间戳的表格进行分析。但是,这些表通常不是在生产环境中创建的,也不是定期创建的。是的,但我们有一个这样做的用例,但是您的看起来很完美,完全有意义。是的,确实有一个这样做的用例,但是您的看起来很完美,完全有意义。