Re: Obtaining hundredths of a second data from time data types - Mailing list pgsql-odbc

From Scott Ferrett
Subject Re: Obtaining hundredths of a second data from time data types
Date
Msg-id 56DCDE1B.3060505@ferrettconsulting.com
Whole thread Raw
In response to Re: Obtaining hundredths of a second data from time data types  (Adrian Klaver <adrian.klaver@aklaver.com>)
List pgsql-odbc
SQL_C_TYPE_TIME is defined as

struct tagTIME_STRUCT {
    SQLUSMALLINT hour;
    SQLUSMALLINT minute;
    SQLUSMALLINT second;
} TIME_STRUCT;


There is no fraction of a second component.

On 06/03/2016 10:07, Adrian Klaver wrote:
> On 03/05/2016 12:45 PM, Scott Ferrett wrote:
>> Interesting.  It looks like PostgreSQL is conforming to the
>> specification (unlike Microsoft SQL or SQL Anywhere).  However, it does
>> not help me with the underlying problem and that is "How do I get the
>> fractional part of a TIME field via ODBC?".
>>
>> I have tried SQL_C_TYPE_TIMSTAMP, SQL_C_TYPE_CHAR and
>> SQL_C_TYPE_DEFAULT.  None of these return the fractional part of the
>> time field.  I've also tries SQL_C_TYPE_BINARY and get an error
>> szSqlState = "07006", *pfNativeError = 14, *pcbErrorMsg = 43,
>> MessageText = "Received an unsupported type from Postgres."
>>
>> So how can I get the fractional information?
>
> Use?:
>
> SQL_C_TYPE_TIME
>
>>
>> Note that I do not have any control of the SQL statement.  My code needs
>> to handle any statement and return all information about the query.
>>
>> Cheers,
>>   Scott
>>
>> On 05/03/2016 09:03, Adrian Klaver wrote:
>>> On 03/04/2016 01:20 PM, Scott Ferrett wrote:
>>>> Here is a screen shot from ODBCTest after Issuing "SELECT ts, t FROM
>>>> TestTable" and binding an SQL_C_TYPE_TIMESTAMP to each of the two
>>>> columns:
>>>>
>>>>
>>>>
>>>> As you can see, the timestamp has the hundredths part filled in
>>>> where as
>>>> the time part does not.
>>>>
>>>> I also tried binding to SQL_C_CHAR as a work-around.  But this made no
>>>> difference, producing:
>>>>
>>>>
>>>>
>>>> This is the result of the same select statement run from pgAdmin III
>>>> showing that there the hundredths part is returned for both fields:
>>>>
>>>>
>>>
>>> Looks like this is the reason:
>>>
>>> https://msdn.microsoft.com/en-us/library/ms712436%28v=vs.85%29.aspx
>>>
>>> The identifier for the time ODBC SQL data type is:
>>>
>>> SQL_TYPE_TIME
>>>
>>> to
>>>
>>> SQL_C_TYPE_TIMESTAMP None[b] Data[c] 16[d]
>>>
>>> [c]   The date fields of the timestamp structure are set to the
>>> current date, and the fractional seconds field of the timestamp
>>> structure is set to zero.
>>>
>>>
>>>>
>>>>
>>>> Cheers,
>>>>   Scott
>>>>
>>>
>>>
>>
>
>



pgsql-odbc by date:

Previous
From: Scott Ferrett
Date:
Subject: Re: Obtaining hundredths of a second data from time data types
Next
From: "Inoue, Hiroshi"
Date:
Subject: Re: Obtaining hundredths of a second data from time data types