Sql server 创建当前日期为tablename的数据库表
我想使用sql查询创建一个以当前日期作为表名的数据库表虽然我认为这不是一个好选项,但您可以使用 它看起来像Sql server 创建当前日期为tablename的数据库表,sql-server,Sql Server,我想使用sql查询创建一个以当前日期作为表名的数据库表虽然我认为这不是一个好选项,但您可以使用 它看起来像 using (SqlConnection con = new SqlConnection(conStr)) { try { con.Open(); using (SqlCommand command = new SqlCommand("CREATE TABLE " + "
using (SqlConnection con = new SqlConnection(conStr))
{
try
{
con.Open();
using (SqlCommand command = new SqlCommand("CREATE TABLE " + "someNamingPrefixHere_" + DateTime.Today + " (ab varchar(10));", con))
command.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
在SQL Server中,通过将表括在[]中,您可以根据需要对其命名 因此,生成动态sql并执行它:
EXEC sp_executesql N'create table [12/10/2014] (ab varchar(10));'
此外,您还可以动态获取整个过程:
DECLARE @sql NVARCHAR(MAX) = 'create table [' + CONVERT(nvarchar(30), GETDATE(), 101) + '] (ab varchar(10))'
EXEC sp_executesql @sql
编辑:这最初被标记为MySQL,所以这里也有解决方案,因为我很好奇
SELECT DATE_FORMAT(CURDATE(), '%m/%d/%Y');
SET @SQL =CONCAT('CREATE TABLE `' ,DATE_FORMAT(CURDATE(), '%m/%d/%Y'), '` (id int(10))');
PREPARE stmt FROM @SQL;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
第一:
您真的需要创建一个名称为当前日期的表吗?为什么不只创建一个表并添加一个日期字段,然后继续添加数据,用当前日期填充日期字段
如果确实需要创建多个表,则:
表名不能使用“/”字符,必须用MySQL或SQLServer接受的名称替换
无论如何,要以c#获取当前日期,请使用c#中的,然后您可以使用传递您希望使用的格式对其进行格式化,如:
string tableName = DateTime.Now.ToString("ddMMyyyy");
如果是2014年10月29日,则会得到类似“29102014”的结果
然后,您可以使用MySQL或SQLServer中的sql语法创建sql语句,打开连接,执行命令,然后关闭连接。您应该认真学习一些sql设计实践。一个文件应该是一行,但一天不应该是一整张表。我不能提供任何具体的答案来描述你的“问题”,但最简单的方法就是添加另一列“日期”,就这样。完成的工作。每天都有一张桌子真是疯了 这是我如何在MS SQL server中获得带有日期和时间的表名,如
MY_table_2019-03-25_08h45m32s687
:
DECLARE @MIGRATION_TABLE_1 VARCHAR(100);
SET @MIGRATION_TABLE_1= convert(varchar(25), getdate(),121);
SET @MIGRATION_TABLE_1=REPLACE(@MIGRATION_TABLE_1,' ','_');
SET @MIGRATION_TABLE_1=STUFF(@MIGRATION_TABLE_1,14,1,'h')
SET @MIGRATION_TABLE_1=STUFF(@MIGRATION_TABLE_1,17,1,'m')
SET @MIGRATION_TABLE_1=STUFF(@MIGRATION_TABLE_1,20,1,'s')
SET @MIGRATION_TABLE_1='MY_TABLE_'+@MIGRATION_TABLE_1;
STUFF
函数调用用于替换默认日期格式的
、:
和
2019-03-2508:45:32.687
2019-03-25\u 08h45m32s687
在此阶段,您可以使用
SELECT @MIGRATION_TABLE_1 AS VARCHAR;
然后,您必须在EXEC
语句中使用变量名,因为所有内容都必须是动态的,例如:
EXEC('CREATE TABLE ' + @tablename + ' REST OF YOUR ARGUMENTS);
这可能是我很久以来听到的最糟糕的建筑决策。为什么要这样做?正如前面所说,如果您发现自己拥有一组以特定实体命名的表,无论是日期、公司名称、用户,几乎总是有更好的方法做事情(即,一个带有日期列的表)我认为您指定的任何一个DBMS都不支持表名中的斜杠。您可以使用insert into。为什么要标记c#和两个独立的数据库服务器?我有这个要求,这就是为什么我要这样做,这不是疯狂的plz。。。如果您有建议,请告诉..@HimanshuBisht,是谁提出的要求?从未设计过sql表结构的人?听起来像是一个无稽之谈的学校作业。现在我直接用SQL Server 2012创建了名为26/10/2014的表。所以如果你不知道怎么做并不意味着它不可能发生。。在自己尝试之前不要责怪别人P@HimanshuBisht,我在哪里/什么时候说过这是不可能的???我想说的是,这是一种毫无意义的做法,不应该在实际场景中使用。检查您收到的错误代码,可能是您的数据库用户没有创建表的权限错误。无论如何,你必须发布代码,这样我们就可以看到你真的在使用c#?或者这只是在SQLServer内部?我这么问是因为标签已经被移除了。。我直接用SQLServer创建了它。
EXEC('CREATE TABLE ' + @tablename + ' REST OF YOUR ARGUMENTS);