使用当前日期作为tablename创建数据库表

时间:2014-10-29 13:43:09

标签: sql-server

我想使用sql query

创建一个数据库表,其当前日期为tablename

5 个答案:

答案 0 :(得分:1)

在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;

答案 1 :(得分:0)

虽然我认为这不是一个好的选择,但您可以使用

从C#获取当前日期
DateTime.Today

看起来像

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);
        }
    }

答案 2 :(得分:0)

第一

你真的需要创建一个名称为当前日期的表吗?为什么不创建一个表并添加一个日期字段并继续添加填充日期字段的数据与当前日期?

如果你真的需要创建许多表:

你不能拥有带有“/”字符的表名,你必须用MySQL或SQLServer接受的东西替换它们。

无论如何要在c#中获取当前日期,请使用c#中的DateTime.Now Property,然后您可以使用传递您希望使用的格式的DateTime.ToString Method (String)对其进行格式化:

string tableName = DateTime.Now.ToString("ddMMyyyy");

如果是2014年10月29日,这将给你一个像“29102014”的结果。

然后你可以使用MySQL或SQLServer的sql语法创建sql语句,打开一个连接,执行命令然后关闭连接。

答案 3 :(得分:0)

您应该认真学习一些SQL设计实践。一个文件应该是一行,但有一天不应该是整个表。我无法通过对您的问题"问题的描述提供任何具体的答案,但最简单的方法就是添加另一列" date"就是这样。完成的工作。每天都有一张桌子,这太疯狂了。

答案 4 :(得分:0)

这是我如何在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-25 08:45:32.687

2019-03-25_08h45m32s687

在此阶段,您可以使用

显示变量@MIGRATION_TABLE_1的内容。
SELECT @MIGRATION_TABLE_1 AS VARCHAR;

然后,您必须在EXEC语句中使用变量名称,因为所有内容都必须是动态的,例如:

EXEC('CREATE TABLE ' + @tablename + ' REST OF YOUR ARGUMENTS);