Ole requiere some modification.
The 0 (zero) date in Visual Fox, VB and VBA compatible products is 
12/30/1899.
The vbNull date es 12/31/1899. vbNull is 1 !!!!

Walter Negro


El 14/11/2011 04:15 p.m., Ron Pinkas escribió:
>
> Hi Przemek,
>
> Many thanks for the detailed reply.
>
> Since it appears that the 2 most important differences you described 
> have now been addresed, I vote for complete synch, and would greatly 
> appreciate your help in achieving a full synch with Harbour's TIESTAMP 
> support.
>
> Please let us know which code if any will require addtional work.
>
> Walter, Andi, ..., any input?
>
> Ron
>
> On Nov 11, 2011 8:00 PM, "Przemysław Czerpak" <dru...@poczta.onet.pl 
> <mailto:dru...@poczta.onet.pl>> wrote:
>
>     On Thu, 10 Nov 2011, Ron Pinkas wrote:
>
>     Hi Ron,
>
>     > Could you please help us review and consider synch issues of
>     > DATETIME support between Harboiur and xHarbour?
>
>     There were some deeper modifications in this are in xHarbour
>     recently. I'll look at it. Initial datetime implementation in
>     xHarbour was really interesting and good peace of code but it
>     introduce some incompatibilities to Clipper and needed some
>     minor code cleanup. Anyhow it was not precisely defined how
>     it should work. Now it's the most important problem in keeping
>     this code alive. It's hard to cleanup anomalies when programmer
>     does not know expected behavior. If you agree then I can add
>     support for Harbour like datetime arithmetics to HVM code and
>     update some vital part of core code. Anyhow it's not fully
>     compastible with current xHarbour behavior. There were two most
>     importatn differences betwen Harbour and xHarbour:
>     1. initial date value which can be seen in this code:
>          proc main()
>             set date format to "yyyy/mm/dd"
>             ? {^ 02:00 }
>          return
>
>       Harbour shows:
>              /  /   02:00:00.000
>       xHarbour:
>          1899/12/30 02:00:00.000
>       This difference is important in code exchanging data with OLE
>       servers so OLE interface has to be updated to keep it.
>
>     2. Separate type for date values when non integer number is
>       aded to date item.
>       As I can see current xHarbour SVN works like Harbour so this
>       difference does not longer exists but I'm not sure if other
>       code which needed such behavior had been updated.
>
>     I can add Harbour like TIMESTAMP values and update most important
>     parts of core non HVM code but I'm afraid I cannot make it for whole
>     xHarbour code. I hope that other developers can adopt their code if
>     necessary. As I can see in some places there is also code borrowed
>     from Harbour which will begin to work correctly when I'll update HVM
>     anyhow I cannot promise that I'll update whole xHarbour code to fully
>     respect new timestamp values.
>     Below I'm attaching small text I created to describe differences
>     between Harbour and xHarbour. Recent modifications in xHarbour HVM
>     changed xHarbour behavior so now it does not well describes it.
>     Anyhow it's still good description of TIMESTAMP values in Harbour
>     If you can accept it then I'll commit modification which introduce
>     it to xHarbour.
>
>     best regards,
>     Przemek
>
>
>
>
>     ###    DATETIME/TIMESTAMP VALUES    ###
>     =======================================
>     Both compilers support DATETIME/TIMESTAMP values though they use
>     different
>     implementation.
>
>     In Harbour it's new type TIMESTAMP for which VALTYPE() function
>     returns
>     "T". It has its own HVM arithmetic similar to the one used by DATE
>     type
>     but not exactly the same. The difference (-) between two TIMESTAMP
>     values
>     is represented as number where integer part is number of days and
>     fractional
>     part is time in given day. Non-exact comparison (=, >, <, >=, <=) for
>     TIMESTAMP and DATA value assumes that both values are equal if the
>     date
>     part is the same. Such semantic is also respected by native RDDs when
>     mixed DATE and TIMESTAMP values are used in indexes, seeks,
>     scopes, etc.
>     When number is added to DATE type then like in Clipper only
>     integer part
>     increase (decrease) DATE value but when it's added to TIMESTAMP
>     value then
>     fractional part is also significant. When TIMESTAMP value is added
>     to DATE
>     value then as result new TIMESTAMP value is calculated. Here is detail
>     information about relational and arithmetic operators in Harbour.
>     Timestamp values in relational operators <, <=, >, >=, =, ==
>          - When two timestamp values are compared then VM compares
>     date and
>            time parts in both values.
>          - When date and timestamp values are used in <, <=, >, >=, =
>            operations then VM compares only date part in both values.
>          - When date and timestamp values are used in == operation then VM
>            compares date part in both values and then check if time part
>            of timestamp value is 0.
>     Timestamp values in + and - math operations:
>     <t> + <t> => <t>
>     <t> - <t> => <n>
>     <t> + <n> => <t>
>     <n> + <t> => <t>
>     <t> - <n> => <t>
>     <d> + <t> => <t>
>     <t> + <d> => <t>
>     <d> - <t> => <n>
>     <t> - <d> => <n>
>       when number is result or argument of timestamp operation then
>     its integer
>       part is a number of days and fractional part represents time in day.
>
>     In xHarbour DATE type was extended to hold information about time.
>     Clipper
>     compatible DATE arithmetic in HVM was modified to respect
>     fractional part
>     in numbers which was used for time part.
>     The xHarbour DATETIME implementation introduces incompatibilities
>     to Clipper
>     (f.e. compare Clipper and xHarbour results in code like: '? date()
>     + 1.125'
>     so in some cases existing Clipper code has to be carefully adopted
>     to work
>     correctly with xHarbour but it's fully functional solution though
>     it needs
>     some minor fixes in conversions between datetime values and numbers.
>
>     The difference between Harbour and xHarbour can be seen in this code:
>          proc main()
>             local dVal, tVal
>             dVal := date()
>             tVal := dVal + {^ 02:00 }  // {^ 02:00 } timestamp
>                                        // constant, see below
>             ? valtype(dVal), valtype(tVal)
>             ? dVal; ? tVal
>             dVal += 1.125  // In Clipper and Harbour it increases
>                            // date value by 1
>             tVal += 1.25   // it it increases timestamp value by 1 day
>                            // and 6 hours
>             ? dVal; ? tVal
>             ? dVal = tVal  // In Harbour .T. because date part is the same
>             ? date() + 0.25, date() + 0.001 == date()
>          return
>     Harbour shows:
>          D T
>          05/20/09
>          05/20/09 02:00:00.000
>          05/21/09
>          05/21/09 08:00:00.000
>          .T.
>          05/20/09 .T.
>
>     and xHarbour shows:
>          D D
>          05/20/09
>          06/25/21 02:00:00.00
>          05/21/09 03:00:00.00
>          06/26/21 08:00:00.00
>          .F.
>          05/20/09 06:00:00.00 .F.
>
>     Recently to xHarbour "T" type was introduced with some of Harbour
>     TIMESTAMP
>     code in RDD but VM was not modified to follow Harbour/RDD
>     modifications.
>     So now some parts of xHarbour are not synced and I cannot say what
>     is the
>     goal of DATETIME values and their arithmetic in xHarbour VM for
>     the future.
>
>
>
>     ###    LITERAL DATE AND TIMESTAMP VALUES    ###
>     ===============================================
>     Both compilers tries to support VFP like datetime constant values
>     in the following format:
>          { ^ [ YYYY-MM-DD [,] ] [ HH[:MM[:SS][.FFF]] [AM|PM] ] }
>     In Harbour and VFP the following characters can be used as date
>     delimiters:
>     "-", "/" and "."
>     xHarbour supports only "/" as date delimiter.
>     There is no limit on number of digits in YYYY, MM, DD, HH, MM, SS, FFF
>     parts. Important is only their value. This is the format in semi
>     PP notation:
>          { ^ <YEAR> <sep:/-> <MONTH> <sep:/-> <DAY> [[<sep2:,>]
>            [ <HOUR> [ : <MIN> [ : <SEC> [ . <FRAQ> ] ] ] [AM|PP] ] }
>     NOTE: there is one important difference between Harbour and
>     VFP/xHarbour in
>     decoding above format. In VFP and xHarbour when date part is
>     missed then
>     it's set by default to: 1899-12-30 so this code:
>          { ^ 12:00 }
>     gives the same results as:
>          { ^ 1899/12/30 12:00 }
>     Harbour does not set any default date value when timestamp
>     constant contains
>     only time part.
>     Harbour supports VFP syntax only in Compiler. It's not supported in
>     macrocompiler and it can be disabled in the future so it's not
>     suggested
>     to use with Harbour programs.
>
>     Only Harbour supports date constant (in compiler and
>     macrocompiler) in the
>     form d"YYYY-MM-DD" f.e.:
>          d"2009-05-20"
>     Also delimiter "/" or "." can be used instead of "-".
>
>     Only Harbour supports timestamp constant (in compiler and
>     macrocompiler)
>     in the form t"YYYY-MM-DD HH:MM:SS.fff"
>     The exact accepted timestamp pattern is is:
>          YYYY-MM-DD [H[H][:M[M][:S[S][.f[f[f[f]]]]]]] [PM|AM]
>     f.e.:
>          tValue := t"2009-03-21 5:31:45.437 PM"
>     or:
>          YYYY-MM-DDT[H[H][:M[M][:S[S][.f[f[f[f]]]]]]] [PM|AM]
>     with literal "T" as date and time part delimiters (XML timestamp
>     format),
>     f.e.:
>          tValue := t"2009-03-21T17:31:45.437"
>     The following characters can be used as date delimiters: "-", "/", "."
>     if PM or AM is used HH is in range < 1 : 12 > otherwise in range <
>     0 : 23 >
>
>     Harbour compiler and macrocompiler support also date constants in the
>     form 0dYYYYMMDD f.e.:
>          0d20090520.
>
>
> ------------------------------------------------------------------------------
> RSA(R) Conference 2012
> Save $700 by Nov 18
> Register now
> http://p.sf.net/sfu/rsa-sfdev2dev1
>
>
> _______________________________________________
> xHarbour-developers mailing list
> xHarbour-developers@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/xharbour-developers



------------------------------------------------------------------------------
RSA(R) Conference 2012
Save $700 by Nov 18
Register now
http://p.sf.net/sfu/rsa-sfdev2dev1
_______________________________________________
xHarbour-developers mailing list
xHarbour-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xharbour-developers

Reply via email to