<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page Section1
        {size:8.5in 11.0in;
        margin:70.85pt 85.05pt 70.85pt 85.05pt;}
div.Section1
        {page:Section1;}
/* List Definitions */
@list l0
        {mso-list-id:159394374;
        mso-list-type:hybrid;
        mso-list-template-ids:406120360 2073701200 201981955 201981957 201981953 201981955 201981957 201981953 201981955 201981957;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:20.25pt;
        text-indent:-.25in;
        font-family:Symbol;
        mso-fareast-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
@list l0:level2
        {mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level4
        {mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level7
        {mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1
        {mso-list-id:1434546463;
        mso-list-type:hybrid;
        mso-list-template-ids:2131276972 201981967 201981977 201981979 201981967 201981977 201981979 201981967 201981977 201981979;}
@list l1:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level2
        {mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level3
        {mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level4
        {mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level5
        {mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level6
        {mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level7
        {mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level8
        {mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level9
        {mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=ES link=blue vlink=purple>
<div class=Section1>
<p class=MsoNormal><span lang=EN-US style='color:#1F497D'>Hi all,<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US style='color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US style='color:#1F497D'>I know that this is
an unixODBC mail list and my question is related to ODBC++ library but it was
impossible to me to find a forum dedicated to ODBC++ library. Sorry for any inconvenience.
I think Timestamp class has a bug and I’d be glad if somebody
could confirm (or not) my supposition. Any comment/suggestion is welcomed.<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US style='color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US>Next, I shortly describe the steps to
reproduce the problem, the problem description and the proposed fix:<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><b><u><span lang=EN-US>Steps to reproduce:<o:p></o:p></span></u></b></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoListParagraph style='text-indent:-.25in;mso-list:l1 level1 lfo2'><![if !supportLists]><span
lang=EN-US><span style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=EN-US>Create one DB (</span><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New";color:maroon'>MY_DB</span><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'>)</span><span
lang=EN-US>with one TIMESTAMP column called “timecol”<o:p></o:p></span></p>
<p class=MsoListParagraph style='text-indent:-.25in;mso-list:l1 level1 lfo2'><![if !supportLists]><b><span
lang=EN-US><span style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>
</span></span></span></b><![endif]><span lang=EN-US>Set the computer TimeZone
to “GMT+01:00 Madrid” <b>with DST activated<o:p></o:p></b></span></p>
<p class=MsoListParagraph style='text-indent:-.25in;mso-list:l1 level1 lfo2'><![if !supportLists]><span
lang=EN-US><span style='mso-list:Ignore'>3.<span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=EN-US>Write into the DB the timestamp
“</span><span lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'>1225027900”;
it </span><span lang=EN-US>corresponds to:<o:p></o:p></span></p>
<p class=MsoListParagraph style='text-autospace:none'><b><span lang=EN-US
style='font-size:9.0pt;font-family:"Verdana","sans-serif"'>GMT </span></b><span
lang=EN-US style='font-size:9.0pt;font-family:"Verdana","sans-serif"'>timezone<b>:
</b><span style='background:lime;mso-highlight:lime'>Sun, 26 Oct 2008 13:31:40
UTC</span></span><span lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>
<p class=MsoListParagraph><b><span lang=EN-US style='font-size:9.0pt;
font-family:"Verdana","sans-serif"'>Madrid </span></b><span lang=EN-US
style='font-size:9.0pt;font-family:"Verdana","sans-serif"'>timezone: <span
style='background:yellow;mso-highlight:yellow'>Sunday, October 26, 2008 2:31:40
PM</span><o:p></o:p></span></p>
<p class=MsoListParagraph><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoListParagraph><span lang=EN-US>The following piece of code is used
to save the timestamp:<o:p></o:p></span></p>
<p class=MsoListParagraph><span lang=EN-US>….<o:p></o:p></span></p>
<p class=MsoListParagraph><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'>std::time_t t = 1225027900;</span><span lang=EN-US><o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.6pt;text-indent:35.4pt;text-autospace:
none'><span lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'>odbc::PreparedStatement
*ins_stmt(prepareStatement(<span style='color:maroon'>"insert into MY_DB
(\"timecol\") values (?)"</span>));<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.6pt;text-indent:35.4pt;text-autospace:
none'><span lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'>ins_stmt->setTimestamp(
1, odbc::Timestamp(t));<o:p></o:p></span></p>
<p class=MsoListParagraph><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'>ins_stmt->executeUpdate();<o:p></o:p></span></p>
<p class=MsoListParagraph><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'>…<o:p></o:p></span></p>
<p class=MsoListParagraph style='text-indent:-.25in;mso-list:l1 level1 lfo2'><![if !supportLists]><span
lang=EN-US><span style='mso-list:Ignore'>4.<span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=EN-US>Now, read from MY_DB:<o:p></o:p></span></p>
<p class=MsoListParagraph><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoListParagraph><span lang=EN-US>…<o:p></o:p></span></p>
<p class=MsoNormal style='text-indent:35.4pt;text-autospace:none'><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'>odbc::PreparedStatement
*sel_stmt(conn->get()->prepareStatement( <span style='color:maroon'>"select
* from MY_DB"</span> ) );<o:p></o:p></span></p>
<p class=MsoNormal style='text-autospace:none'><span lang=EN-US
style='font-size:10.0pt;font-family:"Courier New"'>
odbc::ResultSet rset( sel_stmt->executeQuery() );<o:p></o:p></span></p>
<p class=MsoNormal style='text-autospace:none'><span lang=EN-US
style='font-size:10.0pt;font-family:"Courier New"'>
<o:p></o:p></span></p>
<p class=MsoNormal style='text-autospace:none'><span lang=EN-US
style='font-size:10.0pt;font-family:"Courier New"'>
odbc::Timestamp ts( rset->getTimestamp(1));<o:p></o:p></span></p>
<p class=MsoListParagraph><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'>std::time_t <b><span style='color:red'>loadedFromDB</span></b> =
ts.getTime();<o:p></o:p></span></p>
<p class=MsoListParagraph><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'>…<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></p>
<p class=MsoListParagraph style='text-indent:-.25in;mso-list:l1 level1 lfo2'><![if !supportLists]><span
lang=EN-US><span style='mso-list:Ignore'>5.<span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=EN-US>The value retrieved from DB of </span><b><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New";color:red'>loadedFromDB
</span></b><b><span lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'>should
be </span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'>1225027900
but instead its value is 3600 seconds less, that is, 1225024300! </span><span
lang=EN-US><o:p></o:p></span></p>
<p class=MsoListParagraph><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><b><u><span lang=EN-US>Problem description:<o:p></o:p></span></u></b></p>
<p class=MsoNormal><u><span lang=EN-US><o:p><span style='text-decoration:none'> </span></o:p></span></u></p>
<p class=MsoNormal><span lang=EN-US>Note: The 26<sup>th</sup> of October at
03:00 AM , Madrid’s TS, is when the transition from Daylight Saving Time
(DST) to Standard Time (ST) takes place. <o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoListParagraph style='margin-left:20.25pt;text-indent:-.25in;
mso-list:l0 level1 lfo4'><![if !supportLists]><span lang=EN-US
style='font-family:Symbol'><span style='mso-list:Ignore'>·<span
style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><b><span lang=EN-US>When writing data to the DB</span></b><span
lang=EN-US> the Timezone constructor calls setTime(std::time_t) which in turn
calls std::localtime. Thus, what we actually get saved into the DB is a local
time, i.e, in our particular case: </span><span lang=EN-US style='font-size:
9.0pt;font-family:"Verdana","sans-serif";background:yellow;mso-highlight:yellow'>Sunday,
October 26, 2008 2:31:40 PM</span><span lang=EN-US style='font-size:9.0pt;
font-family:"Verdana","sans-serif"'> which is correct taking into consideration
that Madrid’s TZ is one hour ahead GMT.</span><span lang=EN-US><o:p></o:p></span></p>
<p class=MsoListParagraph style='margin-left:20.25pt;text-indent:-.25in;
mso-list:l0 level1 lfo4'><![if !supportLists]><span lang=EN-US
style='font-family:Symbol'><span style='mso-list:Ignore'>·<span
style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><b><span lang=EN-US>When reading data back from
the DB </span></b><span lang=EN-US>we first retrieve an object “ts”
which holds exactly the date from the DB, i.e., </span><span lang=EN-US
style='font-size:9.0pt;font-family:"Verdana","sans-serif";background:yellow;
mso-highlight:yellow'>Sunday, October 26, 2008 2:31:40 PM</span><span
lang=EN-US style='font-size:9.0pt;font-family:"Verdana","sans-serif"'>. So far,
so good. Now comes into play odbc::Tiemstamp::getTime() method which is
supposed to transform back the local time kept inside “ts” object
into UTC. Basically what it does is (for the sake of simplicity I won’t
show all code details):</span><span lang=EN-US><o:p></o:p></span></p>
<p class=MsoListParagraph style='margin-left:20.25pt'><span lang=EN-US
style='font-size:9.0pt;font-family:"Verdana","sans-serif"'><o:p> </o:p></span></p>
<p class=MsoNormal style='text-indent:20.25pt;text-autospace:none'><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'>time_t
Time::getTime() <span style='color:blue'>const<o:p></o:p></span></span></p>
<p class=MsoListParagraph style='margin-left:20.25pt'><span lang=EN-US
style='font-size:10.0pt;font-family:"Courier New"'>{</span><span lang=EN-US
style='font-size:9.0pt;font-family:"Verdana","sans-serif"'><o:p></o:p></span></p>
<p class=MsoNormal style='text-indent:35.4pt;text-autospace:none'><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'>tm stm;<o:p></o:p></span></p>
<p class=MsoNormal style='text-indent:35.4pt;text-autospace:none'><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'>stm.tm_year=year_-1900;<o:p></o:p></span></p>
<p class=MsoNormal style='text-indent:35.4pt;text-autospace:none'><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'>stm.tm_mon=month_-1;<o:p></o:p></span></p>
<p class=MsoNormal style='text-indent:35.4pt;text-autospace:none'><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'>stm.tm_mday=day_;<o:p></o:p></span></p>
<p class=MsoNormal style='text-indent:35.4pt;text-autospace:none'><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New";background:red;
mso-highlight:red'>stm.tm_hour=0; //red row<o:p></o:p></span></p>
<p class=MsoNormal style='text-indent:35.4pt;text-autospace:none'><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New";background:red;
mso-highlight:red'>stm.tm_min=0; //red row<o:p></o:p></span></p>
<p class=MsoNormal style='text-indent:35.4pt;text-autospace:none'><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New";background:red;
mso-highlight:red'>stm.tm_sec=0; //red row</span><span lang=EN-US
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>
<p class=MsoNormal style='text-indent:20.25pt;text-autospace:none'><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'>
stm.tm_isdst=-1; <span style='color:green'>//negative means not known<o:p></o:p></span></span></p>
<p class=MsoNormal style='text-indent:20.25pt;text-autospace:none'><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New";color:green'><o:p> </o:p></span></p>
<p class=MsoListParagraph style='margin-left:20.25pt'><span lang=EN-US
style='font-size:10.0pt;font-family:"Courier New"'> <span
style='color:blue'>return</span> std::mktime(&stm) + second_ + minute_*60 +
hour_*3600;</span><span lang=EN-US style='font-size:9.0pt;font-family:"Verdana","sans-serif"'>
</span><span lang=EN-US><o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US>
}<o:p></o:p></span></p>
<p class=MsoNormal><u><span lang=EN-US><o:p><span style='text-decoration:none'> </span></o:p></span></u></p>
<p class=MsoNormal><span lang=EN-US>
The problem we got here is easy to spot: std::mktime is passed 00:00 AM (see
the rows highlighted in red) that is, three hours before the DST takes place.
Therefore, std::mktime is unaware that the time we actually want to compute is
ST. If we passed day 27<sup>th</sup> instead of 26<sup>th</sup> , std::mktime
would return the correct result because the hours, minutes and seconds
wouldn’t matter to decide whether we have to deal with DST or ST! <o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><b><u><span lang=EN-US>Proposed fix:<o:p></o:p></span></u></b></p>
<p class=MsoNormal><b><u><span lang=EN-US><o:p><span style='text-decoration:
none'> </span></o:p></span></u></b></p>
<table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
style='border-collapse:collapse'>
<tr style='height:14.6pt'>
<td width=145 style='width:109.05pt;border:solid black 1.0pt;background:#D9D9D9;
padding:0in 5.4pt 0in 5.4pt;height:14.6pt'>
<p class=MsoNormal align=center style='text-align:center'><span lang=EN-US>File<o:p></o:p></span></p>
</td>
<td width=328 style='width:246.05pt;border:solid black 1.0pt;border-left:
none;background:#D9D9D9;padding:0in 5.4pt 0in 5.4pt;height:14.6pt'>
<p class=MsoNormal align=center style='text-align:center'><span lang=EN-US>Code
to be replaced<o:p></o:p></span></p>
</td>
<td width=258 style='width:193.5pt;border:solid black 1.0pt;border-left:none;
background:#D9D9D9;padding:0in 5.4pt 0in 5.4pt;height:14.6pt'>
<p class=MsoNormal align=center style='text-align:center'><span lang=EN-US>Replacement<o:p></o:p></span></p>
</td>
<td width=248 style='width:186.35pt;border:solid black 1.0pt;border-left:
none;background:#D9D9D9;padding:0in 5.4pt 0in 5.4pt;height:14.6pt'>
<p class=MsoNormal align=center style='text-align:center'><span lang=EN-US>Add<o:p></o:p></span></p>
</td>
</tr>
<tr style='height:91.0pt'>
<td width=145 style='width:109.05pt;border:solid black 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt;height:91.0pt'>
<p class=MsoNormal align=center style='text-align:center'><span lang=EN-US>libodbc++-0.2.3\include\odbc++
\types.h<o:p></o:p></span></p>
</td>
<td width=328 style='width:246.05pt;border-top:none;border-left:none;
border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;padding:0in 5.4pt 0in 5.4pt;
height:91.0pt'>
<p class=MsoNormal style='text-autospace:none'><span lang=EN-US
style='font-size:10.0pt;font-family:"Courier New";color:green'>/** Gets the
time_t value of this timestamp */<o:p></o:p></span></p>
<p class=MsoNormal style='text-autospace:none'><span lang=EN-US
style='font-size:10.0pt;font-family:"Courier New";color:blue'>virtual</span><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'> std::time_t
Timestamp::getTime() {<o:p></o:p></span></p>
<p class=MsoNormal style='text-autospace:none'><span lang=EN-US
style='font-size:10.0pt;font-family:"Courier New";color:blue'>return</span><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'>
Date::getTime()+Time::getTime();<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'>}</span><span
lang=EN-US><o:p></o:p></span></p>
</td>
<td width=258 style='width:193.5pt;border-top:none;border-left:none;
border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;padding:0in 5.4pt 0in 5.4pt;
height:91.0pt'>
<p class=MsoNormal style='text-autospace:none'><span lang=EN-US
style='font-size:10.0pt;font-family:"Courier New";color:green'>/** Gets the
time_t value of this timestamp */<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Courier New";
color:blue'>virtual</span><span lang=EN-US style='font-size:10.0pt;
font-family:"Courier New"'> std::time_t getTime();</span><span lang=EN-US><o:p></o:p></span></p>
</td>
<td width=248 style='width:186.35pt;border-top:none;border-left:none;
border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;padding:0in 5.4pt 0in 5.4pt;
height:91.0pt'>
<p class=MsoNormal align=center style='text-align:center;text-autospace:none'><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New";color:green'>-<o:p></o:p></span></p>
</td>
</tr>
<tr style='height:91.0pt'>
<td width=145 style='width:109.05pt;border:solid black 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt;height:91.0pt'>
<p class=MsoNormal align=center style='text-align:center'><span lang=EN-US>libodbc++-0.2.3\src\
datetime.cpp<o:p></o:p></span></p>
</td>
<td width=328 style='width:246.05pt;border-top:none;border-left:none;
border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;padding:0in 5.4pt 0in 5.4pt;
height:91.0pt'>
<p class=MsoNormal align=center style='text-align:center;text-autospace:none'><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New";color:green'>-<o:p></o:p></span></p>
</td>
<td width=258 style='width:193.5pt;border-top:none;border-left:none;
border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;padding:0in 5.4pt 0in 5.4pt;
height:91.0pt'>
<p class=MsoNormal align=center style='text-align:center;text-autospace:none'><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New";color:green'>-<o:p></o:p></span></p>
</td>
<td width=248 style='width:186.35pt;border-top:none;border-left:none;
border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;padding:0in 5.4pt 0in 5.4pt;
height:91.0pt'>
<p class=MsoNormal style='text-autospace:none'><span lang=EN-US
style='font-size:10.0pt;font-family:"Courier New"'>std::time_t
Timestamp::getTime()<o:p></o:p></span></p>
<p class=MsoNormal style='text-autospace:none'><span lang=EN-US
style='font-size:10.0pt;font-family:"Courier New"'>{<o:p></o:p></span></p>
<p class=MsoNormal align=center style='text-align:center;text-autospace:none'><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'>tm stm;<o:p></o:p></span></p>
<p class=MsoNormal align=center style='text-align:center;text-autospace:none'><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'>stm.tm_year=year_-1900;<o:p></o:p></span></p>
<p class=MsoNormal align=center style='text-align:center;text-autospace:none'><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'>stm.tm_mon=month_-1;<o:p></o:p></span></p>
<p class=MsoNormal align=center style='text-align:center;text-autospace:none'><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'>stm.tm_mday=day_;<o:p></o:p></span></p>
<p class=MsoNormal align=center style='text-align:center;text-autospace:none'><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'>stm.tm_hour=hour_;<o:p></o:p></span></p>
<p class=MsoNormal align=center style='text-align:center;text-autospace:none'><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'>stm.tm_min=minute_;<o:p></o:p></span></p>
<p class=MsoNormal align=center style='text-align:center;text-autospace:none'><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'>stm.tm_sec=second_;<o:p></o:p></span></p>
<p class=MsoNormal align=center style='text-align:center;text-autospace:none'><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'>stm.tm_isdst=-1;
<span style='color:green'>//negative means not known<o:p></o:p></span></span></p>
<p class=MsoNormal align=center style='text-align:center;text-autospace:none'><span
style='font-size:10.0pt;font-family:"Courier New";color:blue'>return</span><span
style='font-size:10.0pt;font-family:"Courier New"'> mktime(&stm);<o:p></o:p></span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>}</span><span lang=EN-US style='font-size:10.0pt;
font-family:"Courier New";color:green'><o:p></o:p></span></p>
</td>
</tr>
</table>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US>Thanks for any help/suggestion,<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US>Costin.<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
</div>
</body>
</html>