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

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

Как TDateTime конвертнуть в формат MS SQL DateTime? [D6, WinXP]


Aleksandr ©   (2002-06-04 18:07:00) 

Понадобилось тут... А то программа, вставляющая запрос типа

WHERE DateTimeField<"""+DateToStr(Date)+""""

на англоязычном компьютере как-то странно эту самую дату воспринимает...


McSimm   (2002-06-05 15:37:00) [1]

В догонку - есть еще способ.

Для каждого коннекта можно задавать формат даты, если выполнить (один раз после Connect)
ADOConnection.Execute("SET DATEFORMAT mdy").

Тогда все строковые форматы даты (кроме универсального) через данный коннект будут рассматриваться как указано в SET


McSimm   (2002-06-05 15:30:00) [2]

Ерунда какая-то.

И через параметр, и с форматированием должно работать.

Такой вопрос - Connect к серверу случайно не через ODBC провайдера?

Очень на это похоже...


Aleksandr   (2002-06-05 14:44:00) [3]

Да, и насчет форматирования:

SELECT ID1, ID2 FROM Table1
WHERE Date1<"20020605"

в программе при трассировке количество записей, возвращенных в этом запросе = 1184. А в Query Analizer этот запрос возвращает 158 записей... Так что фигня с форматированием...


Aleksandr   (2002-06-05 13:39:00) [4]

Вот тебе и раз... новые новости...
Попробовал по методу Gerakl - SQL Server тут же матюгнулся на запрос - видимо, неявная конвертация при присвоении
ParamByName("Date1").AsDateTime:=Date все же происходит, а проблема с попыткой воспринять 28 как месяц имела место...
Ладно, будем пробовать форматировать... хотя наверное, функция конвертации Delphi TDateTime в SQL Server DateTime надежнее...


McSimm   (2002-06-04 18:46:00) [5]

Извиняюсь, привел универсальный формат для Аксеса.
(кстати, ты забыл про #..#)

Для MS-SQL универсальный формат выглядит так:
FormatDateTime("yyyymmdd hh:nn", D)
FormatDateTime("yyyymmdd", D)


Aleksandr   (2002-06-04 18:34:00) [6]

2 Gerakl
Спасибо, вариант хороший!

2 McSimm
Так... что-то я не понял... В запрос он ведь все равно уйдет текстовой строкой типа "06/04/2002 00:00"? В чем его универсальность, в смысле, где гарантия, что SQL Server его воспримет именно что первое - это месяц, второе - день?


McSimm   (2002-06-04 18:19:00) [7]

Используй
FormatDateTime("#mm"/"dd"/"yyyy hh":"mm#", D)

Универсальный формат даты/времени - от языка не зависит


Gerakl   (2002-06-04 18:16:00) [8]

Если запрос через TQuery то:
select ....
from....
where DateTimeField < :MyDate

а потом:
TQuery.ParamByName("MyDate").AsDateTime := Date;// Date - нужная дата
далее..
TQuery.Open;


Наверх

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