Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.12.16;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по корректной работе с датами в SQL - еще раз.   Найти похожие ветки 

 
The X   (2003-11-23 23:56) [0]

Доброго вечера Вам суток, Мастера! Оный вопрос уже подымался мною, но, к сожаэению, появился доп. вопрос. Итак, в запросе используется выборка по величине разницы между двумя датами.
.......WHERE "" + Date + "" - LastDate............. (LastDate - поле в таблице до запроса формата Date Paradox).
Получается так, что после выборки название результирующего поля следующее: "9/25/2003 - LastDate" (при том, что текущая дата - 25.09.2003!!!). Дело в том, что после выборки при обращении к этому полю с разницей дат при региональных настройках "дд.мм.гг" возникает ошибка Invalid Variant Type Conversion. При настройках "дд.мм.гггг" все нормально. ВОПРОС - как независимо от локальных региональных настроек машины коректно работать с такими полями?
ЗАРАНЕЕ СПАСИБО ВСЕМ!


 
ЮЮ   (2003-11-24 02:45) [1]

Не поверю, что Мастера не сказали: "Испльзуй параметрический запрос" и забудь про локальные настройки" :

WHERE :Date - LastDate

>название результирующего поля следующее "9/25/2003 - LastDate":
???
лучше запрос приведи, а Мастера на ощибки укажут :-)


 
The X   (2003-11-25 10:25) [2]

ЮЮ
Допустим, в программе методом соответствующих подстановок запрос принимает следующий окончательный вид:
SELECT Surname, Name, Patronymic, LastTestDate, "25.11.03" - LastTestDate FROM Staff WHERE "25.11.03" - LastTestDate > 30 ORDER BY 4

РЕЗУЛЬТАТ - создание 5 колонок, одна из к-рых носит название:
"11.25.2003 - LastTestDate"
На других машинах эта колонка называется:
"11/25/2003 - LastTestDate"
Если бы месяц был < 10:
"7/25/2003 - LastTestDate"

Понимаешь? Т.е. в зависимости от местных настроек компьютера название этой колонки может изменяться по разному. Мне надо иметь механизм приведения названия этой колонки ДО ЗАПРОСА (если это возможно), чтобы впоследствии гарантированно иметь то название колонки, с к-рым дальше буду работать без ошибок (название поля после запроса зашито жестко в тело программы, т.к. впоследствии к нему осущ. доступ). Но если же этого сделать невозможно, то надо менять программно региональные настройки.
А вот что я делаю после объявления этого запроса:

DateSeparator := "/";
DT1 := FormatDateTime("m/d/yy", Date) + " - LastTestDate";

Это - для корректного доступа к полю запроса.
Приведенный пример работает корректно на машинах с региональными настройками "дд.мм.гггг", но с настройками "дд.мм.гг" генерируется ошибка Invalid variant type conversion.
Вот в чем и проблема - надо корректно всегда приводить название поля в запросе к нужному мне виду.

СПАСИБО.


 
Johnmen   (2003-11-25 10:33) [3]

Вместо "m/d/yy" - ShortDateFormat.
Или я не о том ?


 
Sandman25   (2003-11-25 11:30) [4]

Чтобы всегда знать имя колонки, достаточно это имя выбрать и указать самому, явно.
Например:
select "25.11.2003" - LastDate TheLastDate, ...
Имя колонки всегда будет TheLastDate.

Для некоторых движком имя указывается через as:
select "25.11.2003" - LastDate as TheLastDate, ...


 
The X   (2003-11-25 14:16) [5]

Sandman25
Т.е. можно прямо в запросе задавать имена полей, под которыми будет находиться соответствующая выборка? Такого даже не знал. Попробую, огромное спасибо!



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.12.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.054 c
1-52193
tvic
2003-12-05 13:07
2003.12.16
Подскажите пожалуста со StringGridом !!!!


1-52241
Antonn
2003-12-05 14:44
2003.12.16
ListBox


7-52429
JB
2003-10-10 12:03
2003.12.16
Чтение с консоли результата выполнения программы DOS


6-52306
OlegV
2003-10-21 16:37
2003.12.16
сообщения в локальной сети


1-52178
Olivka
2003-12-02 10:04
2003.12.16
FastReport





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский