Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Adding a value to a 'datetime' column caused overflow.  [new]
A
Guest
Делаю такой элементарный запрос (не смотрите что он несколько странный - это подготовка к инсерту). Если я не накладываю условия where - все работает отлично. Но как только оно появляется - вместе с ним появляется ошибка (смотри сабж). Насколько может сказаться, что VZupOtsenki представляет собой вьюху, в которой используются OpenRowSet-ы с другого сиквела?

  declare @c int, @mn int, @yr int, @dt1 datetime, @dt2 datetime
  
  set @c=2013060 --для примера в конкретном случае
  set @mn=(@c/10)%100
  set @yr=@c/1000

--эти переменные я ввел уже когда получил ошибку, 
--сначала стояло условие, которое сейчас находится в комментарии

  set @dt1='20000101'
  set @dt1=dateadd(year,@yr-2000,@dt1)
  set @dt1=dateadd(month,@mn-1,@dt1)
  set @dt2=dateadd(month,1,@dt1)-1

  select ots_date, ots_autor, 1, ots_autor, 
           ots_worker, ots_worker, 0, ots_value, 1, 0, ots_memo 
           from VZupOtsenki
  where ots_date between @dt1 and @dt2--year(ots_date)=@yr and month(ots_date)=@mn
3 июл 13, 09:50    [14514363]     Ответить | Цитировать Сообщить модератору
 Re: Adding a value to a 'datetime' column caused overflow.  [new]
Glory
Member

Откуда:
Сообщений: 104760
А в VZupOtsenki наверное есть манипуляции с полем типа datetime ?
3 июл 13, 10:08    [14514523]     Ответить | Цитировать Сообщить модератору
 Re: Adding a value to a 'datetime' column caused overflow.  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2396
A,

where datepart(yy,ots_date)=@yr and datepart(mm,ots_date)=@mn
3 июл 13, 10:10    [14514542]     Ответить | Цитировать Сообщить модератору
 Re: Adding a value to a 'datetime' column caused overflow.  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2396
StarikNavy
A,

where datepart(yy,ots_date)=@yr and datepart(mm,ots_date)=@mn


нет, извиняюсь, не с этим проблема -не внимательно посмотрел
с вьюшкой разбирайтесь,
3 июл 13, 10:13    [14514555]     Ответить | Цитировать Сообщить модератору
 Re: Adding a value to a 'datetime' column caused overflow.  [new]
А
Guest
>StarikNavy , не помогает, я уже пробовал подобную конструкцию, только через where datepart(year,ots_date)=@yr and datepart(month,ots_date)=@mn, сейчас проверил и сокращения - тоже самое.

>Glory , если только под махинацией понимать, что выбирается не само поле из таблицы, а поле-2000 лет (1С 8 понимаете ли...)
3 июл 13, 10:24    [14514634]     Ответить | Цитировать Сообщить модератору
 Re: Adding a value to a 'datetime' column caused overflow.  [new]
qwrqwr
Member

Откуда: Msk
Сообщений: 1684
А
выбирается не само поле из таблицы, а поле-2000 лет (1С 8 понимаете ли...)

Дык тип datetime только от 1753 года начинается.
А вы вычли из 2000го года 2000 лет.
3 июл 13, 10:27    [14514653]     Ответить | Цитировать Сообщить модератору
 Re: Adding a value to a 'datetime' column caused overflow.  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2396
А
если только под махинацией понимать, что выбирается не само поле из таблицы, а поле-2000 лет (1С 8 понимаете ли...)


в поле какая-то запись, скорей всего кривая
3 июл 13, 10:29    [14514666]     Ответить | Цитировать Сообщить модератору
 Re: Adding a value to a 'datetime' column caused overflow.  [new]
Glory
Member

Откуда:
Сообщений: 104760
А
>Glory , если только под махинацией понимать, что выбирается не само поле из таблицы, а поле-2000 лет (1С 8 понимаете ли...)

Не махинации, а манипуляции
И "поле-2000 лет" как раз и есть Adding a value to a 'datetime'
3 июл 13, 10:30    [14514670]     Ответить | Цитировать Сообщить модератору
 Re: Adding a value to a 'datetime' column caused overflow.  [new]
А
Guest
qwrqwr
А
выбирается не само поле из таблицы, а поле-2000 лет (1С 8 понимаете ли...)

Дык тип datetime только от 1753 года начинается.
А вы вычли из 2000го года 2000 лет.

Это в 1С 7 даты с 1753 года начинаются, а в 1С 8 в целях борьбы с 2000 годом все даты сдвинуты на 2000 лет, и нулевая дата равна 01.01.2001.

>Glory Если эту ошибку вызывает операция "поле-2000 лет", то как работает вьюха без условия where?
3 июл 13, 11:08    [14514964]     Ответить | Цитировать Сообщить модератору
 Re: Adding a value to a 'datetime' column caused overflow.  [new]
Glory
Member

Откуда:
Сообщений: 104760
А
>Glory Если эту ошибку вызывает операция "поле-2000 лет", то как работает вьюха без условия where?

Разные запросы имеют разные планы выполнения
При разных планах выполнения вычисления выражений вида "поле-2000 лет" может происходить для разного числа записей
3 июл 13, 11:10    [14514994]     Ответить | Цитировать Сообщить модератору
 Re: Adding a value to a 'datetime' column caused overflow.  [new]
А
Guest
Тем более, без условия в запрос должны попадать все записи, кроме того, в данный момент условие не оказывает влияния на запрос, т.к. таблицу только начали заполнять в прошлом месяце и все записи будут удовлетворять этому условию
3 июл 13, 11:16    [14515040]     Ответить | Цитировать Сообщить модератору
 Re: Adding a value to a 'datetime' column caused overflow.  [new]
Glory
Member

Откуда:
Сообщений: 104760
А
Тем более, без условия в запрос должны попадать все записи

Т.е. в вашем представлении нет никаких фильтров и других представлений ?
3 июл 13, 11:17    [14515048]     Ответить | Цитировать Сообщить модератору
 Re: Adding a value to a 'datetime' column caused overflow.  [new]
Glory
Member

Откуда:
Сообщений: 104760
А
в данный момент условие не оказывает влияния на запрос, т.к. таблицу только начали заполнять в прошлом месяце и все записи будут удовлетворять этому условию

Это легко проверить
select "поле-2000 лет" from Table
3 июл 13, 11:17    [14515055]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить