ORDER BY MYTIME, где MYTIME-строка

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

ORDER BY MYTIME, где MYTIME-строка

Сообщение Al Prad » 12.10.2009 (Пн) 15:42

Добрый день!
В БД есть строковое поле TIME. В нем-строка, отображающая время (напр. "15:10:46")

Пишу запрос в VB6

sSQL = "SELECT * FROM ARCH ORDER BY MYDATE, MYTIME"

По полю MYTIME сортируется согласно алфавиту, поскольку это строковое поле. Меня это не устраивает, поскольку нужна сортировка по времени и я пытаюсь строку перевести во время :

sSQL = "SELECT * FROM ARCH ORDER BY MYDATE, TimeValue ( MYTIME)"
Получаю сообщение об ошибке Data type mismatch in criteria expression.

Тогда пробую

sSQL = "SELECT * FROM ARCH ORDER BY MYDATE, CDate ( MYTIME)"
Получаю Invalid use of NULL

И пробую так

sSQL = "SELECT * FROM ARCH ORDER BY MYDATE, Time ( MYTIME)"
Получаю Wrong number arguments used with function in query expression 'Time ( MYTIME)'

Изменить это строковое поле на DateTime не могу (сейчас, по кр.мере) - БД постоянно занята несколькими пользователями.

Подскажите, пожалуйста, как можно подправить SQL-запрос, чтобы сортировка шла как надо?

Спасибо.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: ORDER BY MYTIME, где MYTIME-строка

Сообщение alibek » 12.10.2009 (Пн) 16:48

Лучше всего выгнать пользователей и преобразовать два поля в одно типа DateTime.
Можно использовать TimeValue, только вначале убрать недопустимые значения в MYTIME.
Lasciate ogni speranza, voi ch'entrate.

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Re: ORDER BY MYTIME, где MYTIME-строка

Сообщение Al Prad » 12.10.2009 (Пн) 16:58

alibek писал(а):Лучше всего выгнать пользователей и преобразовать два поля в одно типа DateTime.
Можно использовать TimeValue, только вначале убрать недопустимые значения в MYTIME.


Насчет преобразования двух полей в одно - согласен на 100%. Надо будет как-нибудь так и сделать.

А пока решилось так:
sSQL = sSQL & " order by CDate(CStr( IIF (IsNull (MYDATE)=true, '01.01.1900' , MYDATE) ) + ' ' + IIF (IsNull (MYTIME)=true, '00:00:00' , MYTIME))"

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: ORDER BY MYTIME, где MYTIME-строка

Сообщение alibek » 12.10.2009 (Пн) 19:50

Про NZ не слышал?
Lasciate ogni speranza, voi ch'entrate.

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Re: ORDER BY MYTIME, где MYTIME-строка

Сообщение Al Prad » 13.10.2009 (Вт) 12:45

alibek писал(а):Про NZ не слышал?


Не , не слышал.
VB6, впрочем, тоже не слышал :

Error 3085 Undefined function 'nz' in expression

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: ORDER BY MYTIME, где MYTIME-строка

Сообщение iGrok » 13.10.2009 (Вт) 16:28

Al Prad писал(а):
alibek писал(а):Про NZ не слышал?


Не , не слышал.
VB6, впрочем, тоже не слышал :

Error 3085 Undefined function 'nz' in expression

http://www.google.com/search?client=ope ... 8&oe=utf-8
label:
cli
jmp label


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 31

    TopList