![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Преобразование формата ;
SerjKo © (2002-10-24 15:06:00)Уважаемые господа дело вот в чем:
у меня есть два поля типа DATE (<дата поступления на работу>
и <текущая дата>).
Нужно найти стаж работы.
Я делаю так:
select <текущая дата> - <дата поступления на
работу> from <имя б/д>
Результат получается в днях.
А как получить результат в годах (кроме как <результат>/365)???
MsGuns (2002-10-25 16:42:00) [1]>SerjKo (25.10.02 16:05)
На вопрос о типе используемой СУБД надо отвечать про ФОРМАТ БД
и механизм доступа к нему. Например, в данном случае: DBASE и MsSQL-стандарт SQL через Ole/ODBC. Специалист поймет сразу. А если не специалист, то можно сказать ему любую абракадабру - он один фиг ниче не разберет.
>Кстати я пробовал использовать такие функции как CAST и EXTRACT -увы они не работают
Это возможности языка Local SQL, понимаемый компонентами BDE, и ею же (BDE) компиллирующего его в запрос сервера-адресата. По идее его синтаксис должен быть понятен большинству популярных стандартов SQL. Ошибка может возникать, напрмер, из-за простой опечатке при наборе оператора или неправильном синтаксисе. Для его проверки надо запустить его из SQL-Explorer и если уж там ошибок не будет и все вернется Ok, а в проге будет по-прежнему глючить с ODBC, тогда уж надо читать доку по SQL-92 (2000) и переделать запрос в соответствии с особенностями его синтаксиса.
SerjKo (2002-10-25 16:05:00) [2]MsGuns © (25.10.02 15:53)
Я спорить не буду, просто когда меня спрашивают какую СУБД я использую - как мне ответить: если Делфи не СУБД, ODBC и BDE тоже не СУБД, ну а тип базы данных уж не как не СУБД тоже!!!
Кстати я пробовал использовать такие функции как CAST и EXTRACT -увы они не работают так как я использую драйвер Microsoft OLE DB Provider for ODBC Drivers.
А вот с поддержкой BDE эти функции работают.
Я так понял что мне нужно пользоваться функциями для MS SQl, а не Local SQL.
MsGuns (2002-10-25 15:53:00) [3]>SerjKo (25.10.02 15:33)
Если под BDE понимать не только ядро, но и библиотеки, связанные с ними компоненты, а также набор сервисных утилит (в т.ч. BDE-администратор, DBD и пр.) - то в принципе можно это назвать СУБД, хотя и не позволяющей создавать ПРИЛОЖЕНИЯ для работы со своими БД. Нормальные же современные СУБД имеют такие средства (примеры я уже приводил выше). И уж тем более ODBC не СУБД, т.к. вообще НЕ ИМЕЕТ ЧЕТКО ВЫРАЖЕННОГО СВОЕГО ФОРМАТА, а предназначена для УНИВЕРСАЛЬНОГО ДОСТУПА к любым (почти) БД посредством спец.программ (драйверов)
Но впрочем, обо всем этом можно почитать в документации как к BDE, так и к ODBC, так и к другим (Oracle или IB, например), с которыми дельфя тож работает (и не только с ними)
Delirium (2002-10-25 15:50:00) [4]> MsGuns ©
"Круто ! Если чел был принят 31.12.99, а уволен 2.01.01, то она выдаст стаж 2(!) года." - Согласен, не подумал. Действительно глупо :)))
SerjKo (2002-10-25 15:33:00) [5]MsGuns © (25.10.02 14:32)
Я и не говорил, что Делфи - это СУБД.
Я имел в виду, что в среде Делфи работой баз данных управляет BDE Administrator или ODBC.
Так разве BDE или ODBC не СУБД?
Помоему это и есть СУБД.
MsGuns (2002-10-25 14:32:00) [6]От дроби легко избавиться в самом запросе с помощью
CAST (<выражение, дающее дробь) as Integer
Св-во DisplayFormat и EditFormat присущи в частности классу TField набора данных
По поводу того, что Дельфи работает ИЛИ с BDE или с ODBC. В корне не верно ! ДЕЛЬФИ вообще не работает с базами данных ! Она вообще ни с чем не работает а просто представляет собою СРЕДУ (транслятор+отладчик+библиотеки+др.) и НАБОР КОМПОНЕНТ. Так вот среди этих самых КОМПОНЕНТ есть такие, которые работают с разным ФОРМАТОМ Баз Данных.
Понятие СУБД - это не просто таблицы или файлы с данными - это прежде всего специализированная СИСТЕМА УПРАВЛЕНИЯ, т.е. набор утилит, обеспечивающих создание и обслуживание баз данных. Например, Paradox, FoxPro, Access и др.
Если же для доступа, например, к Paradox, используется ADO (ODBC), а для ORACLE - BDE, о какой СУБД в данном случае идет речь ? Просто идет ОБРАЩЕНИЕ К БД через инструмент доступа (движки или драйвера)
Сказать, что Дельфи - это СУБД - все равно, что обозвать громадный универсам табачной лавкой (только потому, что там продаются табачные изделия, причем именно продаются, а не изготовляются).
SerjKo (2002-10-25 13:53:00) [7]gek © (25.10.02 10:33)
В свойстве какого компонента DisplayFormat надо выставлять?
gek (2002-10-25 10:33:00) [8]Ну поставь в DispleyFormat типа ###
И увидищь числа без дробей
SerjKo (2002-10-25 10:09:00) [9]roottim (25.10.02 09:59)
Мне вообщем то свой запрос нравиться, но результат получается дробный, а я не знаю как преобразовать его в целый.
roottim (2002-10-25 09:59:00) [10]насколько я помню в ОК принято условно считать стаж исходя из :
- 30 дней месяц
- 360 дне год соотв-но
так-что чем ненравится тебе свой запрос?.. подели на 360
SerjKo (2002-10-25 09:41:00) [11]sniknik © (24.10.02 19:29)
Вообще то СУБД - это система управления базами данных, а не тип базы данных.
А в DELPHI управления базами данных на себя берёт или BDE или ODBC исли уже говорить "по понятиям" %-)
SerjKo (2002-10-25 08:55:00) [12]Тип базы данных dBASE.
см. (24.10.02 16:01)
MsGuns (2002-10-24 20:06:00) [13]>Delirium © (24.10.02 19:44)
Круто ! Если чел был принят 31.12.99, а уволен 2.01.01, то она выдаст стаж 2(!) года. Неверно. Надо или 1 полный или 3 неполных.
Так вроде, в ОК принято.
Или принят 1.01.01, а уволен 31.12.01, получите стаж 0 !
Нет уж, месяц туда-сюда еще ничего, но вот год ! Это ж не археология все-таки 8))
Delirium (2002-10-24 19:44:00) [14]Видоизменённый пример из LocalSQL.hlp
SELECT SaleDate, ShipDate,
EXTRACT(YEAR FROM saledate)-EXTRACT(YEAR FROM shipdate) AS YY
FROM Orders
MsGuns (2002-10-24 19:42:00) [15]>SerjKo (24.10.02 17:36)
Дело действительно не в компонентах. Это все равно, что приехать, скажем в штаты, и пытаться в магазине сунуть гривни, объясняя это тем, что мол тебе такие дают, а ихние доллАры ты и на дух не видишь 8)
Чем не подходит MsGuns © (24.10.02 16:17) или не пробовал ?
sniknik (2002-10-24 19:29:00) [16]Дело в том что ты путаеш понятия :О) (и тут пальцы врастопырку!!:))))
ODBC это только доступ к базе так же как ADO, и если у тебя TADOQuery и ADO соответственно то ты используеш не ODBC а ADO + "Microsoft OLE DB Provider for ODBC Drivers" + ODBC драйвер + СУБД т.е. целую связку но тебя просят сказать не о том какими компонентами пользуешся а о типе базы (СУБД) еще см. Val © (24.10.02 15:10) хрен знает когда. а еще лутше полностью и подробно.
и вспоминая одну ветку из потрепатся подозреваю что ты просто напросто придуриваешся. в обшем то я стараюсь пока получается отвечать до полного разбора темы (пока ктонибудь удовлетворяющий ответ не даст) но здесь...??? если следующий вопрос в том же духе то извните и до свидания.
SerjKo (2002-10-24 17:36:00) [17]Дело в том, что я использую ODBC для TADOQuery
sniknik (2002-10-24 17:12:00) [18]Ключевое слово здесь не TADOQuery, Query а BDE,Local SQL :-))
вот примернно если через ADO, Jet к базе Access запрос
SELECT YEAR(Now()-childdate)-1900 AS "Year", Month(Now()-childdate) AS "Month" FROM 1scrdoc
SerjKo (2002-10-24 17:03:00) [19]А если я использую TADOQuery?
sniknik (2002-10-24 16:59:00) [20]Не работает :((. типы надо приводить всетаки локалSQL...