Поделиться через


Преобразование данных из SQL в C: отметки времени

Идентификатор типа данных ODBC SQL метки времени имеет следующий вид:

  • SQL_TYPE_TIMESTAMP

В следующей таблице показаны типы данных ODBC C, в которые можно преобразовать данные SQL с меткой времени. Описание столбцов и терминов в таблице см. в разделе "Преобразование данных из SQL в типы данных C".

Идентификатор типа C Тест *TargetValuePtr *StrLen_or_IndPtr SQLSTATE
SQL_C_CHAR Длина байтов символа BufferLength>

20 <= bufferLength<= длина байтов символов

BufferLength< 20
Data

Усеченные данные[b]

Undefined
Длина данных в байтах

Длина данных в байтах

Undefined
Н/Д

01004

22003
SQL_C_WCHAR Длина символа BufferLength>

20 <= длина символа BufferLength<=

BufferLength< 20
Data

Усеченные данные[b]

Undefined
Длина данных в символах

Длина данных в символах

Undefined
Н/Д

01004

22003
SQL_C_BINARY Длина байтов данных <= BufferLength

Длина байтов данных >BufferLength
Data

Undefined
Длина данных в байтах

Undefined
Н/Д

22003
SQL_C_TYPE_DATE Время метки времени равно нулю[a]

Временная часть метки времени ненулевой[a]
Data

Усеченные данные[c]
6[f]

6[f]
Н/Д

01S07
SQL_C_TYPE_TIME Доля секунд, часть метки времени равна нулю[a]

Доля секунд, часть метки времени ненулевой[a]
Data[d]

Усеченные данные[d], [e]
6[f]

6[f]
Н/Д

01S07
SQL_C_TYPE_TIMESTAMP Доля секунд, часть метки времени не усечена[a]

Доля секунд, часть метки времени усечена[a]
Data[e]

Усеченные данные[e]
16[f]

16[f]
Н/Д

01S07

[a] Значение BufferLength игнорируется для этого преобразования. Драйвер предполагает, что размер *TargetValuePtr — это размер типа данных C.

[b] Дробные секунды метки времени усечены.

[c] Часть времени метки времени усечена.

[d] Часть метки времени игнорируется.

[e] Доля секунды метки времени усечена.

[f] Это размер соответствующего типа данных C.

Когда данные SQL метки времени преобразуются в символьные данные C, результирующая строка находится в строке "гггг--мм дд чч:мм:ss[.f...]" формат, где для дробных секунд можно использовать до девяти цифр. Этот формат не влияет на параметр страны или региона Windows. (За исключением десятичной запятой и дробной секунды, необходимо использовать весь формат независимо от точности типа данных SQL метки времени.)