Классический ASP: попытка показать время, хранящееся в поле "(time(0) , NULL) sql-сервера"

Я сохраняю значение времени (например, 18:30 - формат Испании) в базе данных sql-server 2014 из классического веб-приложения asp. Поле (dtHoraInicio) определяется как (time(0), NULL). Вставки работают, данные сохраняются хорошо.

На моей веб-странице я просто пытаюсь показать значение:

response.write oRSC("dtHoraInicio") 'where oRSC is the recordset

и я получаю эту ошибку:

Ошибка Microsoft Cursor Engine 80020009.

Многоэтапная операция привела к ошибкам. Проверьте каждое значение статуса

Я изменил способ доступа к возвращаемым данным:

Conexion = "Driver={SQL Server};Server=xxxxxxxxxxx;Initial Catalog=yyyyyyyy;User Id=zzzzzzzz;Password=aaaaaaaaaaa"

Set objConexion = Server.CreateObject("ADODB.Connection")
objConexion.CommandTimeout=120
objConexion.ConnectionTimeOut = 120
objConexion.Open Conexion

Set oRSC=CreateObject("ADODB.Recordset")
oRSC.ActiveConnection = objConexion
oRSC.CursorType = 0 ' 1 adOpenKeyset
oRSC.CursorLocation = 3 'adUseClient
oRSC.LockType = 3 'adLockOptimistic
oRSC.Source = FiltrarCadena(ssqlC)
oRSC.Open

'------------------------
response.write oRSC("dtHoraInicio")
'------------------------

И я получил эту новую ошибку:

Ошибка ADODB.Recordset "800a0bb9"

Аргументы имеют неправильный тип, находятся вне допустимого диапазона или конфликтуют друг с другом.

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

Если я выполняю запрос в sql-server Management Studio, он работает идеально и без проблем показывает все данные.

Любая идея?

заранее большое спасибо


person euno    schedule 25.07.2017    source источник
comment
Извините, в производстве используется следующее соединение: Driver={SQL Server};Provider=SQLNCLI11.1;xxxxxxxxxx;database=xxxxxxxx;uid=xxxxxxxx;pwd=xxxxxxxx, а локально я подключаюсь без провайдера, и это работает, но ИТ-команда говорит мне, что они не могут изменить способ подключения, поэтому мой вопрос: почему тип файла Time не распознается OLEDB? Спасибо   -  person euno    schedule 25.07.2017
comment
Мы получили это, наконец, мы преобразовали поле времени в varchar в запросе, прежде чем показывать его на странице. Можете удалить этот вопрос, если хотите (не нашел как) или оставить, может кому пригодится. С Уважением.   -  person euno    schedule 25.07.2017
comment
Это действительный вопрос и ответ, пожалуйста, опубликуйте решение как самостоятельный ответ. :)   -  person Shadow Wizard Wearing Mask V2    schedule 26.07.2017


Ответы (1)


Решение:

SELECT convert(varchar(5), TIME) as TIME from <table>

Где «ВРЕМЯ» — поле типа (время (0) null), и я конвертирую в varchar (5), потому что в Испании формат времени — чч: мм.

person euno    schedule 26.07.2017