2013-04-10 2 views
1

У меня возникли проблемы с этим, и я попробовал все здесь. Я знаю, что это просто ...SQL Compare INT to GETDATE

Наши даты хранятся как int в таблице. EX 20130409. Как мне заставить SQL возвращать даты, которые меньше сегодняшней даты?

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

Вот некоторый последний код:

SELECT 
DBO.SPSYS07.LOC_CODE, 
CONVERT(DATETIME,CAST(DBO.SPSYS07.REQ_D_DATE AS CHAR(8)),101) AS [CONVERTED_REQ_DATE], 
DBO.SPSYS07.REQ_D_DATE 
FROM DBO.SPSYS07 
WHERE SPSYS07.SHIP_DATE <= convert(int,convert(varchar(8),getdate(),112)) 
+1

*** SQL *** это просто * Structured Query Language * - язык, используемый многими системами баз данных, но не аа продукт базы данных ... многие вещи конкретного производителя - поэтому нам действительно нужно знать, что ** система баз данных ** (и какая версия) вы используете .... –

+0

Формат __101__ сильно отличается от __112 __... работает ли это, если вы закомментируете 'convert' в списке выбора ? –

+0

Вы работаете с java/C#? вы можете закодировать преобразование вместо этого. – BrOSs

ответ

0

Попробуйте объявить сегодняшнюю дату и с помощью этого

Declare todaysDate date 
Set todaysDate = getdate() 

Затем преобразовать todaysDate в строку, а затем удалить «-» между годом, месяцем и днями, и затем ....

Select..... Where shipdate <= todaysDate 
0

Вам просто нужно изменить «20130101» для вашей стоимости.

DECLARE @date date 
SELECT @date = CONVERT(date, CAST('20130101' AS CHAR(12)), 112) 
SELECT * FROM yourTable where @date < getdate() 

рассматривает

+0

Это говорит о том, что оператор Select, который присваивает значение переменной, не должен сочетаться с операциями извлечения данных ... – user1604264