Добавить имя таблицы SQL с сегодняшней датой - PullRequest
3 голосов
/ 07 апреля 2010

Я понимаю, что я могу изменить таблицу SQL, используя следующую команду sp:

EXEC sp_rename 'customers', 'custs'

Как бы я добавил это, чтобы новая таблица имела суффикс сегодняшней даты?

Я пробую вариации на тему ниже с небольшим успехом !!

EXEC sp_rename 'customers', 'customers +(CONVERT(VARCHAR(8),GETDATE(),3))'

Любая помощь с благодарностью.

Ответы [ 4 ]

5 голосов
/ 07 апреля 2010

Это звучит как очень плохая вещь! Вы должны оценить свой дизайн, переименование таблиц с датами в именах предполагает, что вы будете порождать множество таблиц, каждая на другую дату.Вы можете добавить столбец даты в свою таблицу и использовать его для дифференциации данных вместо создания совершенно новых таблиц для разных дат.

С учетом сказанного, вы не можете иметь выражение в качестве параметра дляхранимая процедура в SQL Server .Пытаясь объединить форматированную дату со строкой 'Customers', вы пытались передать выражение в качестве параметра.

Вы должны сначала сохранить выражение в локальной переменной, а затем вызвать хранимую процедуру с этимлокальная переменная:

DECLARE @Value varchar(500)
SET @Value='customers' +(CONVERT(VARCHAR(8),GETDATE(),3))
EXEC sp_rename 'customers', @Value
2 голосов
/ 07 апреля 2010

Вы имеете в виду T-SQL, верно? Переместите функции за пределы одинарных кавычек. Что-то вроде:

EXEC sp_rename 'customers', 'customers' +(CONVERT(VARCHAR(8),GETDATE(),3))
1 голос
/ 07 апреля 2010
DECLARE @TableName varchar(50)

SELECT @TableName = (SELECT 'Customers_' + convert(varchar(50),GetDate(),112))

EXEC sp_rename 'customers', @TableName
0 голосов
/ 07 апреля 2010

Поскольку вы почти никогда не должны делать это на такой регулярной основе, что вам нужно вычислить дату программно, я предлагаю это для случайного использования:

EXEC sp_rename 'customers', 'customers20100408' 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...