2016-10-26 2 views
-1

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

например.

INSERT INTO #dateRange(durationDesc, contryCode,startDate,endDate) 
VALUES ('Weekly - TY','UK','20160919','20160925') 
     ,('Weekly - LY','UK','20150921','20150927') 
     ,('Weekly - LW','UK','20150912','20150918') 

Итак, соответствующая неделя предыдущего года. Другой диапазон - месяц до настоящего времени.

Каков наилучший способ сделать это? Я бы предпочел, чтобы мне нужно было ввести только одну дату, а остальное можно обновить.

Любые вопросы, не стесняйтесь спрашивать.

+0

Ваш вопрос непонятно мне. Не могли бы вы пояснить, что именно вы пытаетесь сделать? О каких РСУБД мы говорим? SQL Server? –

+0

SQL Server. Поэтому в настоящее время мне приходится вручную менять даты вручную, когда мне нужно запускать инструкции. Я использую диапазоны дат для подключения к таблицам и возвращаю данные, сгруппированные по этим диапазонам дат. Мне нужен более динамичный способ изменить эти даты вместо меня, чтобы менять даты каждую неделю. – Faiz

+1

Можете ли вы просмотреть это: [Как опубликовать вопрос T-SQL на открытом форуме] (https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on- а-общественный форум /). В частности обратите внимание на «Ожидаемый результат». Если вы будете следовать рекомендациям по этой ссылке, нам будет намного легче понять, что вы хотите сделать, и тем легче для людей, которые здесь могут помочь вам. –

ответ

0

Вы всегда можете получить текущую систему DateTime по GETDATE(), а затем изменить его соответствующим образом DATEADD()

Например:

SELECT DATEADD(YEAR, -1, GETDATE()) -- Result in 1 year prior the current system datetime. 
SELECT DATEADD(MONTH, 13, GETDATE()) -- Result in 13 months after the current system datetime. 

В вашем фрагменте кода вы, кажется, преобразования DateTime в yyyymmdd формат строки (Хотя я очень сомневаюсь в необходимости), чего можно достичь с помощью CONVERT:

SELECT CONVERT(VARCHAR, DATEADD(YEAR, -1, GETDATE()), 112) 

Например, если сегодня это 10/26/2016, то он должен показать результат за 1 год до сегодняшнего дня в формате yyyymmdd, 20151026

+0

Это имеет смысл tweray. Итак, где у меня есть строка, я могу использовать переменную, которая имела бы назначенное значение использования функций dateadd? – Faiz

+0

@Faiz да, хотя я не предлагаю хранить дату как строку – tweray

Смежные вопросы