correction for the first example select cast(cast('1966-01-01 00:00:01' as timestamp) as date); 1966-01-02
On Tue, Mar 31, 2015 at 11:26 PM, Alexander Pivovarov <apivova...@gmail.com> wrote: > Hi Everyone > > I noticed interesting behaviour for timestamp to date hive type conversion > for negative unix time. > > For example: > > select cast(cast('1966-01-01 00:00:01' as timestamp) as date); > 1966-02-02 > > Should it work this way? > > Another example > select last_day(cast('1966-01-31 00:00:01' as timestamp)); > OK > 1966-02-28 > > > more details: > Date: 1966-01-01 00:00:01 > unix time UTC: -126230399 > > daysSinceEpoch=−126230399000 / 86400000 = -1460.999988 > int daysSinceEpoch = -1460 > DateWritable having daysSinceEpoch=-1460 is 1966-01-02 > > > > > >