diff options
author | Rick Morrison <rickmorrison@gmail.com> | 2007-07-26 16:51:09 +0000 |
---|---|---|
committer | Rick Morrison <rickmorrison@gmail.com> | 2007-07-26 16:51:09 +0000 |
commit | 1c66e351324b89fc5570215d89ab04ed903c155b (patch) | |
tree | 7e9ca3898c148e3f3c0e3571b1bde25e6cb3f3b9 /lib/sqlalchemy/databases | |
parent | cb45629abc7f6be8b6d3c60e16f8a6028dc56ed5 (diff) | |
download | sqlalchemy-1c66e351324b89fc5570215d89ab04ed903c155b.tar.gz |
mssql: added support for TIME type (simulated via DATETIME col) [ticket:679]
Diffstat (limited to 'lib/sqlalchemy/databases')
-rw-r--r-- | lib/sqlalchemy/databases/mssql.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/sqlalchemy/databases/mssql.py b/lib/sqlalchemy/databases/mssql.py index 6b1b41123..81536aab1 100644 --- a/lib/sqlalchemy/databases/mssql.py +++ b/lib/sqlalchemy/databases/mssql.py @@ -103,6 +103,29 @@ class MSDate(sqltypes.Date): def get_col_spec(self): return "SMALLDATETIME" +class MSTime(sqltypes.Time): + __zero_date = datetime.date(1900, 1, 1) + + def __init__(self, *a, **kw): + super(MSTime, self).__init__(False) + + def get_col_spec(self): + return "DATETIME" + + def convert_bind_param(self, value, dialect): + if isinstance(value, datetime.datetime): + value = datetime.datetime.combine(self.__zero_date, value.time()) + elif isinstance(value, datetime.time): + value = datetime.datetime.combine(self.__zero_date, value) + return value + + def convert_result_value(self, value, dialect): + if isinstance(value, datetime.datetime): + return value.time() + elif isinstance(value, datetime.date): + return datetime.time(0, 0, 0) + return value + class MSDateTime_adodbapi(MSDateTime): def convert_result_value(self, value, dialect): # adodbapi will return datetimes with empty time values as datetime.date() objects. @@ -310,6 +333,7 @@ class MSSQLDialect(ansisql.ANSIDialect): sqltypes.Float : MSFloat, sqltypes.DateTime : MSDateTime, sqltypes.Date : MSDate, + sqltypes.Time : MSTime, sqltypes.String : MSString, sqltypes.Binary : MSBinary, sqltypes.Boolean : MSBoolean, @@ -914,3 +938,4 @@ dialect = MSSQLDialect + |