11# -*- coding: utf-8 -*-
22import binascii
3+ from datetime import time
4+ from datetime import date
35from datetime import datetime
46import decimal
57from decimal import Decimal as D
911import unittest
1012import uuid
1113
12- from .helpers import skip_test
14+ from .helpers import get_sql_server_version
15+
16+ import pytest
1317
1418
1519def get_bytes_buffer ():
@@ -34,6 +38,9 @@ def typeeq(v1, v2):
3438 float_no float,
3539 money_no money,
3640 stamp_datetime datetime,
41+ stamp_date date,
42+ stamp_time time,
43+ stamp_datetime2 datetime2,
3744 data_bit bit,
3845 comment_vch varchar(50),
3946 comment_nvch nvarchar(50),
@@ -44,7 +51,7 @@ def typeeq(v1, v2):
4451 decimal_no decimal(38,2),
4552 decimal_no2 decimal(38,10),
4653 numeric_no numeric(38,8),
47- stamp_time timestamp,
54+ stamp_timestamp timestamp,
4855 uuid uniqueidentifier
4956)
5057"""
@@ -156,6 +163,37 @@ def test_datetime_params_as_dict(self):
156163 typeeq (testval , colval )
157164 eq_ (testval , colval )
158165
166+ def test_date (self ):
167+ if get_sql_server_version (self .conn ) < 2008 :
168+ pytest .skip ("DATE field type isn't supported by SQL Server versions prior to 2008." )
169+ if self .conn .tds_version < 7.3 :
170+ pytest .skip ("DATE field type isn't supported by TDS protocol older than 7.3." )
171+ testval = date (2013 , 1 , 2 )
172+ colval = self .insert_and_select ('stamp_date' , testval , 's' )
173+ typeeq (testval , colval )
174+ eq_ (testval , colval )
175+
176+ def test_time (self ):
177+ if get_sql_server_version (self .conn ) < 2008 :
178+ pytest .skip ("TIME field type is supported by SQL Server versions prior to 2008." )
179+ if self .conn .tds_version < 7.3 :
180+ pytest .skip ("TIME field type isn't supported by TDS protocol older than 7.3." )
181+ testval = datetime (2013 , 1 , 2 , 3 , 4 , 5 , 3000 )
182+ colval = self .insert_and_select ('stamp_time' , testval , 's' )
183+ testval_no_date = testval .time ()
184+ typeeq (testval_no_date , colval )
185+ eq_ (testval_no_date , colval )
186+
187+ def test_datetime2 (self ):
188+ if get_sql_server_version (self .conn ) < 2008 :
189+ pytest .skip ("DATETIME2 field type isn't supported by SQL Server versions prior to 2008." )
190+ if self .conn .tds_version < 7.3 :
191+ pytest .skip ("DATETIME2 field type isn't supported by TDS protocol older than 7.3." )
192+ testval = datetime (2013 , 1 , 2 , 3 , 4 , 5 , 3000 )
193+ colval = self .insert_and_select ('stamp_datetime2' , testval , 's' )
194+ typeeq (testval , colval )
195+ eq_ (testval , colval )
196+
159197 def test_decimal (self ):
160198 # test rounding down
161199 origval = D ('1.2345' )
0 commit comments