2010-07-07 Veerapuram Varadhan <vvaradhan@novell.com>
authorVeerapuram Varadhan <v.varadhan@gmail.com>
Wed, 7 Jul 2010 06:30:55 +0000 (06:30 -0000)
committerVeerapuram Varadhan <v.varadhan@gmail.com>
Wed, 7 Jul 2010 06:30:55 +0000 (06:30 -0000)
** Fixes #609109 - DateTime part
* TdsComm.cs (Append[DateTime]): More fix for handling SqlServer
* MinValue for DateTime.

svn path=/trunk/mcs/; revision=159985

mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/ChangeLog
mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/TdsComm.cs

index 568b9d3cb4fc36ab58fa69f198475cab6e3307ea..5738c8ad86c2d9bfb2f5cdd930574230b50693f4 100644 (file)
@@ -1,3 +1,8 @@
+2010-07-07  Veerapuram Varadhan  <vvaradhan@novell.com>
+
+       ** Fixes #609109 - DateTime part
+       * TdsComm.cs (Append[DateTime]): More fix for handling SqlServer MinValue for DateTime.
+       
 2010-07-06  Veerapuram Varadhan  <vvaradhan@novell.com>
 
        ** Fixes #609109
index e245fe8706c02c1f8a1f7021f48d34ce7190e616..c48646530e2209750a235b0afb73d4df7374aa30 100644 (file)
@@ -278,13 +278,20 @@ namespace Mono.Data.Tds.Protocol {
                        msecs = span.Milliseconds;
                        
                        if (epoch > t) {
-                               hours = t.Hour - epoch.Hour;
-                               minutes = t.Minute - epoch.Minute;
-                               secs = t.Second - epoch.Second;
-                               msecs = t.Millisecond - epoch.Millisecond;
-                               days--;
+                               // If t.Hour is > 0, days points to the next day and hence, 
+                               // we move it back by a day - otherwise, no change
+                               if (t.Hour > 0) {
+                                       days--;
+                                       hours = t.Hour;
+                               } else {
+                                       hours = 12;
+                               }
+                               
+                               minutes = t.Minute;
+                               secs = t.Second;
+                               msecs = t.Millisecond;
                        }
-                       
+
                        SendIfFull (bytes);
                        if (bytes == 8) {
                                long ms = (hours * 3600 + minutes * 60 + secs)*1000L + (long)msecs;