Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Arithmetic overflow error, При конвертации текста в DateTime 
:(
    Опции темы
TheSheevA
  Дата 6.6.2005, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 6.6.2005

Репутация: нет
Всего: нет



Привет всем!

В таблице есть поле, в котором хранятся данные разного формата, в том числе и даты. Конкретный тип данных в поле определяется другим полем таблицы, типа

TYPE VALUE
int 1234
date 01.01.05
text Hello, World!

Нужно запросом выбрать все записи с датами до сегодняшней. Такой запрос:

SELECT *
FROM table
WHERE
TYPE='date'
AND
CONVERT("DATETIME",VALUE)<GetDate()

выдает сабж. Предположительно, условие применяется ко всем записям (а не только к тем, у которых TYPE='data').
Никто не знает, как с этим бороться (или как написать правильно?)

Используется MS SQL Server
PM MAIL   Вверх
Satana
Дата 6.6.2005, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 564
Регистрация: 15.9.2004
Где: Ставрополь, СЗ ра йон

Репутация: нет
Всего: 5



TheSheevA ну интересно а что все поля в таблице чтоли с датой? почему бы тебе не перечислить те поля которые тебя интересуют и собственно именно это поле и конвертить? smile


--------------------
 Работай на себя 
www.abalentsev.com - Сайт портфолио.
www.pokushau.ru - Рецепты со всего мира.
PM MAIL WWW ICQ   Вверх
TheSheevA
Дата 6.6.2005, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 6.6.2005

Репутация: нет
Всего: нет



Цитата
почему бы тебе не перечислить те поля которые тебя интересуют и собственно именно это поле и конвертить?

Так оно и предполагается, но MSSQL не зочет сразу фыильтровать записи, не проходящие условие TYPE='date' То есть конвертит все записи.
BTW в Access такой же запрос работает нормально...
PM MAIL   Вверх
boevik
Дата 6.6.2005, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 15
Всего: 35



Сделай join по ключу и условием в join поставить TYPE='date'.
Код

SELECT * 
FROM table t1 INNER JOIN table t2
ON t1.id = t2.id AND TYPE='date'
WHERE CONVERT("DATETIME",VALUE)<GetDate()



--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0474 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.