![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Форматы дат в 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]
При формировании запроса лучше использовать параметры для дат.
Гарантия того что сервер правильно поймет кодировку.