-
Приветствую! 1. Всегда пользовался типом smalldatetime. При этом надо было хранить только даты (без времени). В MSSQL2008 наконец появился тип date. Решил перейти на него. Но обнаружились проблемы при получении в Delphi через ADODB значений типа date. 2. Проблема выглядит так, что полученное значение типа date имеет вариантный тип varOleStr (представляет дату в виде '2018-01-01'), а не varDate. 3. Порывшись в интернете, нашел такую фразу: However, in order to improve portability, the default behaviour of the ADOdb mssqlnative driver is to return the date as a string: (здесь http://adodb.org/dokuwiki/doku.php?id=v5:database:microsoft_sql_server) Как совет: задать свойство подключения ReturnDatesAsStrings=false. Но! В примере используется драйвер mssqlnative. Я же в ADODB.Connection параметрах передаю строку: Provider=SQLOLEDB... Не пойму, куда приладить этот mssqlnative. Для SQLOLEDB параметр ReturnDatesAsStrings игнорируется. 4. Вопрос - как заставить ADODB возвращать поля типа date в виде varDate, а не varOleStr? Спасибо!
-
> Не пойму, куда приладить этот mssqlnative. это вообще не к дельфи относится, это похоже к NET и для "переносимости" - винда vs линух.
> 4. Вопрос - как заставить ADODB возвращать поля типа date в виде varDate, а не varOleStr? не надо заставлять, всегда он возвращался в типе дататайм, что дата что время что время с датой... начиная с 2000го года и mssql сервера как минимум. как раз когда начал с mssql работать (за 7ку не скажу, слишком мало с ней "общался", просто не помню... хотя с чего ей отличатся?)
-
-
> sniknik © (09.10.18 18:46) [2]
1. В MSSQL2000 не было типа date (был datetime и smalldatetime). Набери в гугле "new data types in mssql 2008" и увидишь, что date - именно *новый* тип. 2. Вот такое код, будучи выполненным через TADOQuery declare @t table(d date, sdt smalldatetime)
insert @t values(cast('20181020' as date), cast('20181020' as date))
select d, sdt from @t возвращает в поле "d" строку '2008-10-20', а не вариантное значение типа varDate, тогда как в поле "sdt" возвращается именно varDate. В этом и вопрос - как заставить ADODB тип date возвращать как varDate.
-
> sniknik © (09.10.18 18:46) [2]
Так, на всякий случай - проверил, что использую версию AdoDb: 6.1 C:\Program Files (x86)\Common Files\System\ado\msado15.dll Вроде как это последняя версия.
-
> sniknik © (09.10.18 18:41) [1]
Интересно... попробовал такую строку подключения
Provider=SQLNCLI11.1;Integrated Security=SSPI;Persist Security Info=False;User ID="""""";Initial Catalog=mytestdb;Data Source=.;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=TIM-10;Initial File Name="";Use Encryption for Data=False;Tag with column collation when possible=False;MARS Connection=False;DataTypeCompatibility=0;Trust Server Certificate=False;Application Intent=READWRITE;
и все ОК - date возвращается как varDate.
Видимо, SQLOLEDB слишком старый, а SQLNCLI11.1 лучше.
Сам каким провайдером пользуешься для SQL2008?
-
> 1. В MSSQL2000 не было типа date (был datetime и smalldatetime). возможно... всегда пользовался датетаймом. скорее всего пропустил/было не интересно проигнорировал и забыл новшество.
> Видимо, SQLOLEDB слишком старый, а SQLNCLI11.1 лучше. SQLOLEDB идет по умолчанию в винде, SQLNCLI11.1 нужно ставить... если первого достаточно (не отключена авторизация "по старому" на сервере) то "лучший" нафиг не нужен.
> Сам каким провайдером пользуешься для SQL2008? все равно, какой админы настроят в проге, таким и пользуюсь... скорее всего обоими для разных баз. надо смотреть настройки.
-
> sniknik © (10.10.18 08:15) [6]
Попробовал SQLNCLI11.1. Не все работает - какая-то несовместимость есть по типу datetime2 и int. Надо разобраться. Но субъективно он чуть шустрее.
Такое ощущение, что весь мир проигнорировал новый тип date (а он все же 3 байта, а не 4 как в smalldatetime). Нигде вопроса про возврат date как varOleStr не видел...
-
> Такое ощущение, что весь мир проигнорировал новый тип date ну в общем то да, мне лично всегда хватало обычного datetime, ни за лишний байт, ни за повышенную точность никогда "не боролся". всему миру похоже так же пофиг.
-
> sniknik © (10.10.18 14:59) [8]
Может знаешь какой-нибудь крутой ресурс по MSSQL+ADODB? Форумы? Русский, английский - не важно.
-
если стоит офис(или частично, провайдер мелкософта например... х.з. куда он входит, у меня всегда был) то посмотри справку - C:\Program Files\Common Files\microsoft shared\OFFICE16\1049\ADO210.CHM этот файл был самым полезным при изучении ado для меня.
-
Нашелся. Спасибо!
-
|