Re: Status of support for Time type

"James K. Lowden" <[email protected]>
Newsgroups gmane.comp.db.tds.freetds
Message-ID <[email protected]>
On Tue, 30 Apr 2013 20:05:00 +0100
Frediano Ziglio <[email protected]> wrote:

> Problem here is also that you are using dblib which is not supposed
> to be extended!
> 
> As Microsoft decided to not update it we should find a way to
> compatibly extend dblib in order to put/get time/date!

It is easily done, if one has the time.  What needs extending other
than dbbind() and bcp_bind()?  

ISTM dbbind() should support binding a server's DATE or TIME to
DBDATETIME or DBDATETIM4, subject to domain constraints.  Although
there are new types, most databases still keep data per the
Gregorian calendar, and most days are still 24 hours.  Mapping the new
date & time column types to the existing db-lib structures would allow
existing programs to use the new column types merely by relinking to a
newer FreeTDS.  

For completeness -- to support new applications using the extended date
range -- dbbind() would need new structs and new bindings.  

For structures I would use those already defined for ODBC.  Microsoft
defines these, but I don't see support for them in tds_convert()?  

struct tagDATE_STRUCT {
   SQLSMALLINT year;
   SQLUSMALLINT month;
   SQLUSMALLINT day;  
} DATE_STRUCT;

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

For binding, dbbind() defines SMALLDATETIBIND and DATETIMEBIND. I would
suggest adding DATEBIND and TIMEBIND.  

Those are needed only for binary bindings, and only if we adopt new
structs. 

Just a small matter of programming.  

--jkl
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.