2013-07-30 8 views
10

В SQL Server Management Studio я пытаюсь ссылаться на определенную дату и время, используя переменную для даты, как показано ниже.Установка даты переменной в SQL

Declare @specified_date Date 
set @specified_date = '07-01-2013' 

Select * 
from etc 
Where CreatedDate > CONVERT(datetime, @specified_date & '00:00:00.000') 

Этот код не работает, и я получаю эту ошибку:

The data types date and varchar are incompatible in the '&' operator.

используемых данных имеет как дата и время код на нем, и вместо того, чтобы изменить несколько запросов, я d хотел бы иметь возможность просто определить дату один раз и переместить переменную. Если кто-нибудь знает о решении, это было бы здорово.

+0

Я бы рекомендовал ** всегда ** использовать форматированную дату ISO-8601, если указать даты как строку - это формат 'YYYY-MM-DD'. Гарантируется, что только этот формат будет работать на всех экземплярах SQL Server с настройками языка и/или даты. Все, что угодно * может * работать с правильными настройками, но может быть неудачным с ошибкой при использовании в другой системе с разными настройками. –

ответ

16

ли вы попробовать это:

Declare @specified_date Date 
set @specified_date = '07-01-2013' 
Select * from etc 
Where CreatedDate > @specified_date 
+0

Нет, но вы дали мне идею, которая сработала! Спасибо, тонна, это то, что я закончил с – Dakota

+0

. Так что мне сложно добавить код, он в основном объявляет один день как A, следующий как B, а затем выбирает * между A и B – Dakota

3

Используйте + вместо &. Вам также нужно будет наложить строку, чтобы сделать ее датой.

Declare @specified_date Date 
set @specified_date = '07-01-2013' 
Select * from etc 
Where CreatedDate > CONVERT(datetime, @specified_date + cast('00:00:00.000' as datetime)) 
+1

Спасибо! сохраняя это ... Я так привык к кодированию в VBA, что трудно не конкатенировать вещи, используя & lol – Dakota