Имитировать текущую дату на экземпляре SQL Server?

Можно ли изменить дату и время для конкретной базы данных на SQL Server?

Связано ли это с датой / временем операционной системы?

Мы хотим моделировать будущее datetime для целей тестирования, т.е. GETDATE() возвращает дату в будущем.

Он должен быть в полупроизводственной (промежуточной) среде, поэтому, к сожалению, изменение даты и времени ОС не является для нас вариантом.

В идеальном мире мы разворачиваем виртуальный сервер, но на данный момент это тоже не вариант.

Как указано, другими, нет.

По-настоящему хакерским решением было бы написать свою собственную функцию, чтобы вернуть нужную дату и вернуть ее GETDATE (), когда вы закончите тестирование, и вместо этого вызовите эту функцию. Вероятно, есть некоторые небольшие накладные расходы, но он будет делать то, что вам нужно.

К сожалению, он привязан к дате и времени ОС. См. Здесь: http://msdn.microsoft.com/en-us/library/ms188383.aspx

Это значение выводится из операционной системы компьютера, на котором запущен экземпляр SQL Server.

Вы всегда можете использовать это и соответственно настроить:

 SELECT getutcdate() 

См. Ниже дополнительную информацию. Вопрос StackOverflow

Но невозможно изменить результаты из GETDATE() без изменения даты сервера.


Добавлено: Вы можете сделать EXEC xp_cmdshell 'DATE 10/10/2011' если хотите … но это не рекомендуется.

Другим обходным решением, с которым я имел успех, является добавление триггера INSTEAD OF в любую таблицу, в которую вставлено значение GETDATE (), и, например,

 ALTER TRIGGER [dbo].[AccountsPayableReceivable_trg_i] ON [dbo].[AccountsPayableReceivable] INSTEAD OF INSERT AS SET NOCOUNT ON SELECT * INTO #tmp_ins_AccountsPayableReceivable FROM INSERTED UPDATE #tmp_ins_AccountsPayableReceivable SET dtPaymentMade = '01-Jan-1900' WHERE dtPaymentMade between dateadd(ss, -5, getdate()) and dateadd(ss, +5, getdate()) INSERT INTO AccountsPayableReceivable SELECT * from #tmp_ins_AccountsPayableReceivable 

(Кстати, предложение where есть, потому что мой тестовый скрипт автоматически генерирует эти триггеры, добавляя обновление для каждого столбца datetime, поэтому я хочу только обновить те, которые выглядят так, как будто они вставлены с помощью значения GETDATE ().)

Я считаю, что вы можете создать пользовательскую функцию, которая будет выполнять вычисления для вас и применять это.

http://msdn.microsoft.com/en-us/library/ms186755.aspx

Кроме того, его можно использовать как значение по умолчанию для столбца.

Привязать значение столбца по умолчанию к функции в SQL 2005

Interesting Posts

самый простой способ отображать идентификаторы во время рефакторинга базы данных

Параметр SMO ConnectionContext.StatementTimeout игнорируется

Синхронизация данных между сервером и клиентом

SQL Server: параметр хранимой процедуры усечен при использовании динамического запроса

Как группировать конкатенацию нескольких столбцов?

Как использовать Объявленные переменные в корне JSON, а также преобразовывать данные таблицы в JSON на SQL-сервере?

вставлять строки в таблицу с идентификационным столбцом

Как импортировать несколько баз данных Access в SQL Server с помощью SSIS

Как суммировать значения нескольких столбцов в SQL Server

Вставка нескольких значений с помощью Dynamic SQL из приложения ASP.NET

Получение определенного значения в SQL Server

настройка iodbc для использования FreeTDS для MS SQL Server под cygwin

Неправильный расчет в SQL-Server

аррайалист на стол

Столбец IsDeleted или IsDisabled

Давайте будем гением компьютера.