Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Форматы дат в MS SQL Server 2000 [D6, MSSQL]


Nikolai_S ©   (2004-01-15 10:58:00) 

У меня такая проблема. В каком формате нужно работать с датами в MS SQL Server 2000? У себя на рабочем месте в SQL-запросах все работало вот так:
SELECT * FROM MY_TABLE WHERE MY_DATE="23/10/2003"
т.е. дата писалась в одинарных ковычках и в формате "dd/mm/yyyy".

На сервере заказчика на подобный запрос выдается ошибка.

Вероятно в настройках SQL-сервера можно задать формат даты. Как тогда его программно узнать из Дельфи? Ведь сам дельфи как-то знает формат конкретного SQL-сервера, т.к. при работе с датами через TADOTable все всегда работает корректно, хотя тоже через SQL-запросы работает с БД.


Arm79   (2004-01-15 16:32:00) [1]

Смотри
> Reindeer Moss Eater © (15.01.04 11:49) [4]


и

> sniknik © (15.01.04 12:00) [7]


Nikolai_S   (2004-01-15 14:31:00) [2]

В принципе параметры подойдут, но прога уже написана. Все переделывать долго, а вот формат даты в константе сидит. Его можно быстро изменить, даже вписать в него функцию.


SergSuper   (2004-01-15 14:12:00) [3]

вобще язык и настройки задаются в параметрах логина

при добавлении логина это параметр @deflanguage
sp_addlogin [ @loginame = ] "login"
[ , [ @passwd = ] "password" ]
[ , [ @defdb = ] "database" ]
[ , [ @deflanguage = ] "language" ]
[ , [ @sid = ] sid ]
[ , [ @encryptopt = ] "encryption_option"]

Хранятся логины в таблице master..syslogins, туда же записывается и @deflanguage(поле language). По этому language определяется формат даты - по полю dateformat таблицы master..syslanguages.
Еще можно явно задать формат командой SET DATEFORMAT, в данном случае set dateformat dmy
Читайте BOL


sniknik   (2004-01-15 12:00:00) [4]

ничего не надо, никаких конвертов
SELECT * FROM Orders WHERE OrderDate="19960715"
MSSQL сам справится, yyyymmdd
(это к пример-базе Northwind)

хотя почему параметры не подходят все одно не пойму.


Stas   (2004-01-15 11:54:00) [5]

Может это подойдет ?
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1074079583&n=1


paul_k   (2004-01-15 11:53:00) [6]

WHERE MY_DATE=convert(datetime,"23/10/2003",103)
это для указанного формата даты.
подробнее смотреть BOL функцию convert


Reindeer Moss Eater   (2004-01-15 11:49:00) [7]

Если параметры недопустимы, то используй ODBC-canonical формат
yyyy-mm-dd


Nikolay M.   (2004-01-15 11:27:00) [8]


> в параметрах можно только задать условие типа MY_DATE=...,

С чего ты это решил? Попробовать MY_DATE >= :MY_DATE религия не дает?
Что касается сабжа, что мешало в BOL поискать SET DATEFORMAT?


Nikolai_S   (2004-01-15 11:08:00) [9]

Параметры не катят. Там сложный SQL-запрос, да и в параметрах можно только задать условие типа MY_DATE=..., а мне нужно еще MY_DATE>=..., Date Between (...) AND (...)и т.п.


Academic   (2004-01-15 11:00:00) [10]

При формировании запроса лучше использовать параметры для дат.
Гарантия того что сервер правильно поймет кодировку.


Наверх

Титульная страница Поиск, карта сайта Написать письмо