Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SQL-2008. не могу победить конструкцию WHERE в запросе.  [new]
Beholder07
Member

Откуда:
Сообщений: 11
Всем привет. Прошу не судить строго, т.к. одинэсник. И по долгу работы пришлось дружиться с сиквелом.
В общем, есть запрос к БД на сиквеле. В нем стоит отбор типа (текст запроса формируется динамически, в соответствии с выбранным отбором - в данном случае отбор только по дате):
WHERE _Date >= ' 2013-11-06 00:00:00 ' and _Date <= ' 2013-15-06 00:00:00 '
в таблице, колонка _Date имеет формат DateTime. Вот строка из колонки _Date: 2013-11-06 00:01:26.000
Вопрос в следующем: Where не работает. Убираю строку отбора - запрос отрабатывает. Как только добавляю строку отбора - запрос пустой, хотя по приведенной выше записи видно, что она входит в диапазон. В FAQ не нашел ответа, к сожалению.
Спасибо!
17 июн 13, 09:41    [14440226]     Ответить | Цитировать Сообщить модератору
 Re: SQL-2008. не могу победить конструкцию WHERE в запросе.  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Beholder07, добрый день. Не могли бы вы сообщить, какое сообщение об ошибке возникает при попытке выполнить запрос.
17 июн 13, 09:53    [14440273]     Ответить | Цитировать Сообщить модератору
 Re: SQL-2008. не могу победить конструкцию WHERE в запросе.  [new]
qwerty112
Guest
Beholder07
В FAQ не нашел ответа, к сожалению.

https://www.sql.ru/faq/faq_topic.aspx?fid=109
17 июн 13, 09:55    [14440287]     Ответить | Цитировать Сообщить модератору
 Re: SQL-2008. не могу победить конструкцию WHERE в запросе.  [new]
hoha_ftf
Member

Откуда: ЕКБ
Сообщений: 42
Видимо, в условии
WHERE _Date >= ' 2013-11-06 00:00:00 ' and _Date <= ' 2013-15-06 00:00:00 '

с 11 по 15 июня, а в базе
_Date: 2013-11-06 00:01:26.000

это 6 ноября
17 июн 13, 09:59    [14440303]     Ответить | Цитировать Сообщить модератору
 Re: SQL-2008. не могу победить конструкцию WHERE в запросе.  [new]
Beholder07
Member

Откуда:
Сообщений: 11
2 qwerty112 - читал я это - в соседней вкладке открыто. Делал так как советут ( 'YYYYMMDD HH:MM:SS') - тот же результат.
2 Сергей Викт - синтаксический контроль проходит. Просто выполняется пустой запрос, хотя данные должны быть.
17 июн 13, 10:00    [14440316]     Ответить | Цитировать Сообщить модератору
 Re: SQL-2008. не могу победить конструкцию WHERE в запросе.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Beholder07
2 qwerty112 - читал я это - в соседней вкладке открыто. Делал так как советут ( 'YYYYMMDD HH:MM:SS') - тот же результат.

Значит вы обманываете насчет ваших данных

declare @t table (d datetime)
insert @t values('20130611')
insert @t values('20120611')
select * from @t

select * from @t where d >= '20130611 00:00:00' and d <= '20130615 00:00:00'
17 июн 13, 10:07    [14440332]     Ответить | Цитировать Сообщить модератору
 Re: SQL-2008. не могу победить конструкцию WHERE в запросе.  [new]
Beholder07
Member

Откуда:
Сообщений: 11
hoha_ftf
Видимо, в условии
WHERE _Date >= ' 2013-11-06 00:00:00 ' and _Date <= ' 2013-15-06 00:00:00 '

с 11 по 15 июня, а в базе
_Date: 2013-11-06 00:01:26.000

это 6 ноября

При записи в таблицу формат даты был 104, если я правильно понял.
17 июн 13, 10:07    [14440334]     Ответить | Цитировать Сообщить модератору
 Re: SQL-2008. не могу победить конструкцию WHERE в запросе.  [new]
ambarka_max
Member

Откуда: Россия
Сообщений: 517
Beholder07
Всем привет. Прошу не судить строго, т.к. одинэсник.

Это 5!

Надеюсь все получиться. Проверяйте и перепроверяйте, вы где то ошибаетесь. Насчет правильного формата вам уже дали ссылку. Попробуйте выборку за год, далее сужайте за месяц, за неделю.
17 июн 13, 10:08    [14440341]     Ответить | Цитировать Сообщить модератору
 Re: SQL-2008. не могу победить конструкцию WHERE в запросе.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Beholder07
При записи в таблицу формат даты был 104, если я правильно понял.

У типа datetime один единственный формат
104 - это формат текстовой константы, которую вы преобразуете в дату
17 июн 13, 10:10    [14440347]     Ответить | Цитировать Сообщить модератору
 Re: SQL-2008. не могу победить конструкцию WHERE в запросе.  [new]
Beholder07
Member

Откуда:
Сообщений: 11
Вот простой выбор данных из таблицы:
Картинка с другого сайта.
А вот работа запроса:
Картинка с другого сайта.
Буду благодарен, если укажете мне, где я туплю :(
17 июн 13, 10:16    [14440377]     Ответить | Цитировать Сообщить модератору
 Re: SQL-2008. не могу победить конструкцию WHERE в запросе.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Beholder07
Вот простой выбор данных из таблицы:

Вы определитесь, за какой период вы хотите выбрать данные - то ли за июнь 2013го, то ли за ноябрь
17 июн 13, 10:18    [14440394]     Ответить | Цитировать Сообщить модератору
 Re: SQL-2008. не могу победить конструкцию WHERE в запросе.  [new]
qwerty112
Guest
Beholder07
Буду благодарен, если укажете мне, где я туплю :(

у вас - данные за ноябрь, а выборка - "исчет" за июнь
17 июн 13, 10:19    [14440397]     Ответить | Цитировать Сообщить модератору
 Re: SQL-2008. не могу победить конструкцию WHERE в запросе.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31957
Beholder07
Буду благодарен, если укажете мне, где я туплю :(
Вы не просто "Убираю строку отбора - запрос отрабатывает"
Вы выполняете разные запросы, и подозреваю, что вы превращаете тип соединения из LEFT JOIN в INNER JOIN

Напишите 2 запроса, в которых есть данные и нет данных, только без нечитаемых скриншотов.
17 июн 13, 10:21    [14440414]     Ответить | Цитировать Сообщить модератору
 Re: SQL-2008. не могу победить конструкцию WHERE в запросе.  [new]
Beholder07
Member

Откуда:
Сообщений: 11
СПАСИБО ВСЕМ!!!! Разобрался. Действительно, что-то не так с ноябрем и июнем.
Сейчас сделал запрос:
Картинка с другого сайта.
отработал как надо.
Получается, что в таблице данные за ноябрь? Хотя по смыслу выгрузки, должны находиться за июнь... придется перевыгрузить.
17 июн 13, 10:30    [14440479]     Ответить | Цитировать Сообщить модератору
 Re: SQL-2008. не могу победить конструкцию WHERE в запросе.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31957
Beholder07
Получается, что в таблице данные за ноябрь? Хотя по смыслу выгрузки, должны находиться за июнь... придется перевыгрузить.
Очевидно, в загрузке баг, не используются форматы, независимые от настроек, и 11 июня загрузилось как 6 ноября.
17 июн 13, 11:40    [14441112]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить