Daylight saving time rules being applied to DateTimes that don't have a timezone

From: Nathan Kendall <fzzwuzzy8(at)gmail(dot)com>
To: pgsql-odbc(at)postgresql(dot)org
Subject: Daylight saving time rules being applied to DateTimes that don't have a timezone
Date: 2016-11-10 14:45:11
Message-ID: CAOvUx4=JrsBR34FVjWrLTkNc0ripMo=k9m-_naXH0SwG4YM9bg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-odbc

We are having a problem with psqlODBC versions 09.05.0100 through
09.05.0400. With the database table schema listed below, the sample
C# test app below that fails with a violation of the primary key.
However, the same C# code works without issue when using psqlODBC
version 09.03.0400 or older. It would seem as though psqlODBC
versions from 09.05.0100 onward are applying daylight saving time
rules to DateTimes that are specified as not being associated with a
timezone.

Nathan

CREATE TABLE time_test
(
stationid character varying(8) NOT NULL,
date_time timestamp without time zone NOT NULL,
temperature double precision,
CONSTRAINT time_test_pk PRIMARY KEY (stationid, date_time)
);

C# Test App Source Code:

using System;
using System.Data.Odbc;

namespace TimeTestApp1
{
class Program
{
static void Main(string[] args)
{
using (var conn = new OdbcConnection("Driver={PostgreSQL
ANSI(x64)};Server=localhost;Database=weather;Uid=userGoesHere;Pwd=passGoesHere;"))
{
conn.Open();
using (var command = new OdbcCommand("", conn))
{
command.Parameters.Add(new OdbcParameter("stationid",
OdbcType.VarChar));
command.Parameters.Add(new OdbcParameter("date_time",
OdbcType.DateTime));
command.Parameters.Add(new OdbcParameter("temperature",
OdbcType.Double));
command.CommandText = "INSERT INTO time_test (stationid,
date_time, temperature) VALUES (?, ?, ?)";
command.CommandTimeout = 60;
command.Prepare();

DateTime[] testTimes = new DateTime[] {
new DateTime(2016, 3, 13, 1, 0, 0, DateTimeKind.Unspecified),
new DateTime(2016, 3, 13, 2, 0, 0, DateTimeKind.Unspecified),
new DateTime(2016, 3, 13, 3, 0, 0, DateTimeKind.Unspecified)
};

int i = 0;
foreach (var dt in testTimes)
{
i++;
command.Parameters[0].Value = "Place";
command.Parameters[1].Value = dt;
command.Parameters[2].Value = 60 - i;
command.ExecuteNonQuery();
}
}
}
}
}
}

Responses

Browse pgsql-odbc by date

  From Date Subject
Next Message Germán Valdez 2016-11-11 10:39:10 error conection Provider=MSDASQL
Previous Message Arnaud L. 2016-11-10 12:48:59 Re: Problem in using PostgreSQL ODBC driver with VBA