]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Remove quote on first DATEPART paramater
authorGuillaume DOUMENC <gdoumenc@coworks.pro>
Tue, 12 Jan 2016 04:46:32 +0000 (04:46 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 12 Jan 2016 14:54:50 +0000 (09:54 -0500)
(cherry picked from commit c4f415d97988bc8a8d901b150bfb67571f29712e)
- changelog for pr bitbucket:70, fixes #3624

(cherry picked from commit 215167d8d38a381d27c8448f5c6e50c70b9ba0cc)

doc/build/changelog/changelog_10.rst
lib/sqlalchemy/dialects/mssql/base.py
test/dialect/mssql/test_types.py

index 4d017cfb15fb338cadf7ee92f08b9d10500675bb..c465c73ed1c2cdc9f2406aab0ad216bb6c578843 100644 (file)
     :version: 1.0.12
     :released:
 
+    .. change::
+        :tags: bug, mssql
+        :tickets: 3624
+        :pullreq: bitbucket:70
+
+        Fixed the syntax of the :func:`.extract` function when used on
+        MSSQL against a datetime value; the quotes around the keyword
+        are removed.  Pull request courtesy Guillaume Doumenc.
+
     .. change::
         :tags: bug, orm
         :tickets: 3623
index f3d20b3aa83be435d86adb97f3a2aef6bea953ac..8fdb8ee877c0516ea778936e68cd1853d48d2cb4 100644 (file)
@@ -1181,7 +1181,7 @@ class MSSQLCompiler(compiler.SQLCompiler):
 
     def visit_extract(self, extract, **kw):
         field = self.extract_map.get(extract.field, extract.field)
-        return 'DATEPART("%s", %s)' % \
+        return 'DATEPART(%s, %s)' % \
             (field, self.process(extract.expr, **kw))
 
     def visit_savepoint(self, savepoint_stmt):
index a3dc6a91dfbc4326ca2c2bf89a38250d80e8bbfc..68a6908520cd5bf122a1f023be5a3359787c067f 100644 (file)
@@ -64,6 +64,18 @@ class MSDateTypeTest(fixtures.TestBase):
             result_processor, 'abc'
         )
 
+    def test_extract(self):
+        from sqlalchemy import extract
+        fivedaysago = datetime.datetime.now() \
+            - datetime.timedelta(days=5)
+        for field, exp in ('year', fivedaysago.year), \
+                ('month', fivedaysago.month), ('day', fivedaysago.day):
+            r = testing.db.execute(
+                select([
+                    extract(field, fivedaysago)])
+            ).scalar()
+            eq_(r, exp)
+
 
 class TypeDDLTest(fixtures.TestBase):