Skip to content

Commit

Permalink
Fixed inserting datetime as date (#75)
Browse files Browse the repository at this point in the history
Fixed inserting datetime as date
  • Loading branch information
gle4er authored and xzkostyan committed Apr 1, 2019
1 parent 2e3d729 commit 2a055b6
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 2 deletions.
7 changes: 6 additions & 1 deletion clickhouse_driver/columns/datecolumn.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,14 @@ class DateColumn(FormatColumn):
format = 'H'

epoch_start = date(1970, 1, 1)
epoch_end = date(2105, 1, 1)

def before_write_item(self, value):
return (value - self.epoch_start).days
value = date(value.year, value.month, value.day)
diff = (value - self.epoch_start).days
if value > self.epoch_end or diff < 0:
return 0
return diff

def after_read_item(self, value):
return self.epoch_start + timedelta(value)
23 changes: 22 additions & 1 deletion tests/columns/test_date.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import os
from datetime import date
from datetime import date, datetime

from freezegun import freeze_time
from mock import patch
Expand All @@ -23,3 +23,24 @@ def test_do_not_use_timezone(self):
with patch.dict(os.environ, {'TZ': 'US/Hawaii'}):
inserted = self.client.execute(query)
self.assertEqual(inserted, data)

def test_insert_datetime_to_date(self):
with self.create_table('a Date'):
testTime = datetime(2015, 6, 6, 12, 30, 54)
self.client.execute(
'INSERT INTO test (a) VALUES', [(testTime, )]
)
query = 'SELECT * FROM test'
inserted = self.emit_cli(query)
self.assertEqual(inserted, '2015-06-06\n')

def test_wrong_datetime_insert(self):
with self.create_table('a Date'):
wrongTime = date(5555, 1, 1)
nullTime = date(1, 1, 1)
self.client.execute(
'INSERT INTO test (a) VALUES', [(wrongTime, ), (nullTime, )]
)
query = 'SELECT * FROM test'
inserted = self.emit_cli(query)
self.assertEqual(inserted, '0000-00-00\n0000-00-00\n')

0 comments on commit 2a055b6

Please sign in to comment.