![]() |
|
|
![]()
|
|
| Berliner |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 803 Регистрация: 18.5.2005 Репутация: нет Всего: 2 |
В базе данных MS SQL 2000 дата храниться в таком виде 38510 - соответсвует 09 06 2005. как с помощью делфи вызвать хранимую процедуру?(параметр кодированая дата) Вся проблемма в том что пользователь указывает с(TMonthCaleder1) и по(TmonthCalender2) а в MS SQL 2000 надо передавать число. exec test 38510, 38921
Спасиб за ответ |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Ну дык TDateTime - это real, где целая часть и есть число дней... Так и передавать...
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Berliner |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 803 Регистрация: 18.5.2005 Репутация: нет Всего: 2 |
хорошо! но пересенная TDateTime (9 июня 2005) будет иметь вид 38510?
Я думаю мы не поняли друг друга |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Ну да, всё правильно...
Пусть у тебя будет поле MyDate, тогда обращаясь к нему у тебя: MyQuery.fieldbyname('MyDate').asinteger - покажет 38510, а MyQuery.fieldbyname('MyDate').asString - покажет "9 июня 2005" И в базе данных и в Дельфи тип дата-время хранятся абсолютно одинаково! И там и там этот тип физически хранится и манипулируется как real (float) - где целая часть это число дней с какого-то там числа, по-моему с 30 декабря 1899 года, а дробная часть - это время, например 1/24 - это один час... А когда явно указываешь дату в ввиде например "10.1.2005" то сервер неявно её преобразовывает в тот же real и манипулирует всё равно real, а потом когда тебе показывает результат - то результат сервером или дельфи транслируется обратно из real в строку. Есть только одно исключение в хранении даты-времени, под Linux дата смещена на 2 дня, там она считается с 1 января 1900 года -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| kobra |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 730 Регистрация: 15.6.2005 Где: Грузия, Тбилиси Репутация: 1 Всего: 9 |
чуть-чуть поправлю Vitа, в делфи (у борланда кажется везде так) чиллу 0 соответствует дата - 30.12.1899 00:00:00.000
а в MS SQL (у дяди била кажется везде так) - 01.01.1900 00:00:00.000 так что при работе из делфи с MS SQL ету разницу надо учитывать. |
|||
|
||||
| Berliner |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 803 Регистрация: 18.5.2005 Репутация: нет Всего: 2 |
Спасиб!
Вызвать хранимую процедуру(MSSQL 2000) где параметр дата из Делфи пользователь выбирает с помощью DateTimePicker Правильно? SQL.Add('exec proc MyProc, TDateTime'); |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |