powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Преобразование varchar в datetime и использование выражения {fn current_timestam
2 сообщений из 2, страница 1 из 1
Преобразование varchar в datetime и использование выражения {fn current_timestam
    #32025343
Oleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У нас возникла проблема работы с функциями ODBC из запросов MSSQL.

Функция MSSQL current_timestamp возвращает результат типа datetime, пример использования:
select current_timestamp
Результат:
2002-03-15 12:51:19.590

Функция ODBC {fn current_timestamp()} возвращает результат типа varchar, пример использования:
select {fn current_timestamp(0)}
Результат:
2002-03-15 12:50:45

Беда в том, что дата, возвращаемая функцией ODBC current_timestamp, представлена текстовым типом данных, причем в локальном формате, в результате чего, эту дату я не могу ни записать в поле таблицы datetime, ни сравнивать с полями таблицы у которых тип данных datetime. Программа закрытая и я не могу изменять и добавлять запросы, подскажите что и где можно изменить в настройках сервера, чтобы запросы c использованием {fn current_timestamp()} нормально работали. Мне надо чтобы эта функция возвращала строку с датой в американском формате, а не локальном.

Реальный запрос:
insert into histor (dbid,entity_dbid,entitydef_id,entitydef_name,user_name,action_name,action_timestamp,old_state,new_state) values (33554480, 33554435, 16777224,'Defect','ok','Submit', {fn current_timestamp(0)},'no value','Submitted')

Тестовый пример:
1. Создание тестовой таблицы (все прошло нормально):
create table t(n int, b datetime)
2. Добавили запись с текущим timestamp (все прошло нормально):
insert into t(n, b) values(1, current_timestamp)
3. Добавили запись с датой в виде строки, неявное преобразование, дата представлена формате datetime "год-день-месяц час:минута:секунда" (все прошло нормально):
insert into t(n, b) values(2, '2002-15-03 12:15:18')
4. Добавление записи с датой в формате "год-месяц-день час:минута:секунда" невозможно, выдается ошибка о неправильном формате данных:
insert into t(n, b) values(3, '2002-03-15 12:15:18')
Server: Msg 242, Level 16, State 3, Line 1
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
The statement has been terminated.
5. Аналогичная проблема встает и при использовании функции ODBC {fn current_timestamp()}
insert into t(n, b) values(4, {fn current_timestamp(0)})
Server: Msg 242, Level 16, State 3, Line 1
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
The statement has been terminated.
...
Рейтинг: 0 / 0
Преобразование varchar в datetime и использование выражения {fn current_timestam
    #32025703
Oleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В настройках пользователя базы данных установили язык по умолчанию в значение English, после чего все стало работать.
Проблема возникала с программой ClearQuest.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Преобразование varchar в datetime и использование выражения {fn current_timestam
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]