проблема в использовании между функцией в SQL Server 2008 - PullRequest
0 голосов
/ 06 июня 2011

Я разрабатываю одно веб-приложение, используя asp.net 2005 и Microsoft SQL Server 2008 . Мне нужна помощь для извлечения данных из базы данных между заданным диапазоном.

поле даты в моей таблице имеет тип VARCHAR (25), а сохраненный формат даты - дд-мм-гггг. когда я использую предложение Между в запросе SQL, тогда он не предоставляет все данные, то есть критерии даты, в которых предложение не работает нормально.

в то время как мои клиенты требуют, чтобы формат даты сохранялся как дд-мм-гггг и извлекал данные в соответствии с заданным диапазоном.

поэтому, пожалуйста, помогите мне с этим, что я должен делать в этом случае.

SQL-запрос:

@datefrom varchar(15),  // parameter in the procedure           
@dateto varchar(15) 

set @sql = '';     
set @sql = @sql +  'SELECT * FROM ven_timesheetreportmaster vtsrm WITH (nolock)    
                    INNER JOIN ven_descriptionmaster_timesheet vdmts ON vdmts.description_id = vtsrm.description_id '  
set  @sql  = @sql +  ' WHERE vtsrm.entry_date BETWEEN ''' + @datefrom + ''' AND  ''' + @dateto  + '''  '

if ( @emp_id !='0')    
    set  @sql  = @sql +  ' AND vtsrm.emp_id =' + @emp_id + ' '  

В таблице ven_timesheetreportmaster тип entry_date представляет собой тип данных varchar ..

Если я передам значения,

@date from : 01-05-2011
@date to : 31-05-2011

показывает все значения в БД с апреля по сегодняшний день

Ответы [ 2 ]

5 голосов
/ 06 июня 2011

У вас есть сравнение строк в varchar (25), а не сравнение дат, точно такое, как ожидалось.То есть строка '06 -06-2011 'находится перед строкой '31 -05-2011'

. Добавьте несколько CONVERT со стилем 112 и сравните фактические даты .

Или исправьте свои данные ... формат dd-mm-yyyy должен быть установлен в клиентском коде, а база данных должна иметь собственные типы даты / времени.

0 голосов
/ 06 июня 2011

Поскольку ваш запрос извлекает данные за апрельский месяц

, поэтому, пожалуйста, сверьтесь с внутренним запросом на соединение

или просто предоставьте пример данных в обеих таблицах

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