summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/databases/mssql.py
diff options
context:
space:
mode:
authorJason Kirtland <jek@discorporate.us>2009-03-30 20:41:48 +0000
committerJason Kirtland <jek@discorporate.us>2009-03-30 20:41:48 +0000
commitaca84bebb091a51ceeb911249c366e17b954826a (patch)
tree87a0424805905c9fdae0ab6930144c91b9a78ff6 /lib/sqlalchemy/databases/mssql.py
parent1ad157a0a1823706ffb43ee7d235c38ae16f46ff (diff)
downloadsqlalchemy-aca84bebb091a51ceeb911249c366e17b954826a.tar.gz
extract() is now dialect-sensitive and supports SQLite and others.
Diffstat (limited to 'lib/sqlalchemy/databases/mssql.py')
-rw-r--r--lib/sqlalchemy/databases/mssql.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/sqlalchemy/databases/mssql.py b/lib/sqlalchemy/databases/mssql.py
index 63ec8da15..03cf73eee 100644
--- a/lib/sqlalchemy/databases/mssql.py
+++ b/lib/sqlalchemy/databases/mssql.py
@@ -1515,6 +1515,14 @@ class MSSQLCompiler(compiler.DefaultCompiler):
}
)
+ extract_map = compiler.DefaultCompiler.extract_map.copy()
+ extract_map.update ({
+ 'doy': 'dayofyear',
+ 'dow': 'weekday',
+ 'milliseconds': 'millisecond',
+ 'microseconds': 'microsecond'
+ })
+
def __init__(self, *args, **kwargs):
super(MSSQLCompiler, self).__init__(*args, **kwargs)
self.tablealiases = {}
@@ -1586,6 +1594,10 @@ class MSSQLCompiler(compiler.DefaultCompiler):
kwargs['mssql_aliased'] = True
return super(MSSQLCompiler, self).visit_alias(alias, **kwargs)
+ def visit_extract(self, extract):
+ field = self.extract_map.get(extract.field, extract.field)
+ return 'DATEPART("%s", %s)' % (field, self.process(extract.expr))
+
def visit_savepoint(self, savepoint_stmt):
util.warn("Savepoint support in mssql is experimental and may lead to data loss.")
return "SAVE TRANSACTION %s" % self.preparer.format_savepoint(savepoint_stmt)