<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Error filtering by datetime Lakehouse Federated SQL Server table in Data Engineering</title>
    <link>https://community.databricks.com/t5/data-engineering/error-filtering-by-datetime-lakehouse-federated-sql-server-table/m-p/133979#M49981</link>
    <description>&lt;P&gt;Thanks, &lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/145555"&gt;@Isi&lt;/a&gt;. Very helpful.&amp;nbsp;&lt;/P&gt;&lt;P&gt;It would be nice if Lakehouse federation would do this for us (the same way that it knows SQL Server uses ISNULL where Spark SQl uses NVL). Is there a way to bring it the dev's attention?&lt;/P&gt;</description>
    <pubDate>Mon, 06 Oct 2025 16:47:39 GMT</pubDate>
    <dc:creator>ClintHall</dc:creator>
    <dc:date>2025-10-06T16:47:39Z</dc:date>
    <item>
      <title>Error filtering by datetime Lakehouse Federated SQL Server table</title>
      <link>https://community.databricks.com/t5/data-engineering/error-filtering-by-datetime-lakehouse-federated-sql-server-table/m-p/133737#M49914</link>
      <description>&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;In&lt;/SPAN&gt;&lt;SPAN&gt; unity &lt;/SPAN&gt;&lt;SPAN&gt;catalog&lt;/SPAN&gt;&lt;SPAN&gt;, I have a &lt;/SPAN&gt;&lt;SPAN&gt;connection&lt;/SPAN&gt; &lt;SPAN&gt;to&lt;/SPAN&gt;&lt;SPAN&gt; a &lt;/SPAN&gt;&lt;SPAN&gt;SQL&lt;/SPAN&gt; &lt;SPAN&gt;Server&lt;/SPAN&gt; &lt;SPAN&gt;database&lt;/SPAN&gt;&lt;SPAN&gt;. &lt;/SPAN&gt;&lt;SPAN&gt;When&lt;/SPAN&gt;&lt;SPAN&gt; I &lt;/SPAN&gt;&lt;SPAN&gt;try&lt;/SPAN&gt; &lt;SPAN&gt;to&lt;/SPAN&gt; &lt;SPAN&gt;filter&lt;/SPAN&gt; &lt;SPAN&gt;by&lt;/SPAN&gt;&lt;SPAN&gt; a &lt;/SPAN&gt;&lt;SPAN&gt;datetime&lt;/SPAN&gt;&lt;SPAN&gt; column &lt;/SPAN&gt;&lt;SPAN&gt;using&lt;/SPAN&gt;&lt;SPAN&gt; a &lt;/SPAN&gt;&lt;SPAN&gt;datetime&lt;/SPAN&gt; &lt;SPAN&gt;with&lt;/SPAN&gt;&lt;SPAN&gt; fractional &lt;/SPAN&gt;&lt;SPAN&gt;seconds&lt;/SPAN&gt;&lt;SPAN&gt;, Databricks gives me this error:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;Job aborted due &lt;/SPAN&gt;&lt;SPAN&gt;to&lt;/SPAN&gt;&lt;SPAN&gt; stage failure: &lt;/SPAN&gt;&lt;SPAN&gt;com&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;microsoft&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;sqlserver&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;jdbc&lt;/SPAN&gt;&lt;SPAN&gt;.SQLServerException: An error occurred during the current command (Done &lt;/SPAN&gt;&lt;SPAN&gt;status&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;). Conversion failed &lt;/SPAN&gt;&lt;SPAN&gt;when&lt;/SPAN&gt;&lt;SPAN&gt; converting &lt;/SPAN&gt;&lt;SPAN&gt;date&lt;/SPAN&gt; &lt;SPAN&gt;and/or&lt;/SPAN&gt; &lt;SPAN&gt;time&lt;/SPAN&gt; &lt;SPAN&gt;from&lt;/SPAN&gt; &lt;SPAN&gt;character&lt;/SPAN&gt;&lt;SPAN&gt; string.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;On&lt;/SPAN&gt;&lt;SPAN&gt; the databricks side, I &lt;/SPAN&gt;&lt;SPAN&gt;use&lt;/SPAN&gt;&lt;SPAN&gt; Azure Databricks, &lt;/SPAN&gt;&lt;SPAN&gt;and&lt;/SPAN&gt;&lt;SPAN&gt; I have tried this &lt;/SPAN&gt;&lt;SPAN&gt;both&lt;/SPAN&gt; &lt;SPAN&gt;using&lt;/SPAN&gt;&lt;SPAN&gt; Serverless compute &lt;/SPAN&gt;&lt;SPAN&gt;with&lt;/SPAN&gt;&lt;SPAN&gt; Environment &lt;/SPAN&gt;&lt;SPAN&gt;version&lt;/SPAN&gt; &lt;SPAN&gt;3&lt;/SPAN&gt; &lt;SPAN&gt;and&lt;/SPAN&gt; &lt;SPAN&gt;with&lt;/SPAN&gt;&lt;SPAN&gt; classic compute &lt;/SPAN&gt;&lt;SPAN&gt;using&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;16&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;4&lt;/SPAN&gt;&lt;SPAN&gt; LTS (includes Apache Spark &lt;/SPAN&gt;&lt;SPAN&gt;3&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;5&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;2&lt;/SPAN&gt;&lt;SPAN&gt;, Scala &lt;/SPAN&gt;&lt;SPAN&gt;2&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;12&lt;/SPAN&gt;&lt;SPAN&gt;). &lt;/SPAN&gt;&lt;SPAN&gt;On&lt;/SPAN&gt;&lt;SPAN&gt; the &lt;/SPAN&gt;&lt;SPAN&gt;SQL&lt;/SPAN&gt; &lt;SPAN&gt;Server&lt;/SPAN&gt;&lt;SPAN&gt; side, I have see it &lt;/SPAN&gt;&lt;SPAN&gt;using&lt;/SPAN&gt; &lt;SPAN&gt;both&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;Enterprise &lt;/SPAN&gt;&lt;SPAN&gt;Edition&lt;/SPAN&gt;&lt;SPAN&gt;: Core&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;based Licensing (&lt;/SPAN&gt;&lt;SPAN&gt;64&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;bit&lt;/SPAN&gt;&lt;SPAN&gt;) &lt;/SPAN&gt;&lt;SPAN&gt;and&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;SQL&lt;/SPAN&gt;&lt;SPAN&gt; Azure.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;Here&lt;/SPAN&gt;&lt;SPAN&gt;'s a minimal case to replicate. In SQL Server:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;create table test_datetimes (dt datetime);&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;INSERT INTO test_datetimes (dt) VALUES ('&lt;/SPAN&gt;&lt;SPAN&gt;2025&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;07&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;17&lt;/SPAN&gt; &lt;SPAN&gt;14&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;33&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;21&lt;/SPAN&gt;&lt;SPAN&gt;');&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;INSERT INTO test_datetimes (dt) VALUES ('&lt;/SPAN&gt;&lt;SPAN&gt;2025&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;07&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;17&lt;/SPAN&gt; &lt;SPAN&gt;15&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;53&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;35&lt;/SPAN&gt;&lt;SPAN&gt;');&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;INSERT INTO test_datetimes (dt) VALUES ('&lt;/SPAN&gt;&lt;SPAN&gt;2025&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;07&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;17&lt;/SPAN&gt; &lt;SPAN&gt;16&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;36&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;33&lt;/SPAN&gt;&lt;SPAN&gt;');&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;INSERT INTO test_datetimes (dt) VALUES ('&lt;/SPAN&gt;&lt;SPAN&gt;2025&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;08&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;07&lt;/SPAN&gt; &lt;SPAN&gt;13&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;41&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;27&lt;/SPAN&gt;&lt;SPAN&gt;');&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;INSERT INTO test_datetimes (dt) VALUES ('&lt;/SPAN&gt;&lt;SPAN&gt;2025&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;08&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;07&lt;/SPAN&gt; &lt;SPAN&gt;15&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;41&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;51&lt;/SPAN&gt;&lt;SPAN&gt;');&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;INSERT INTO test_datetimes (dt) VALUES ('&lt;/SPAN&gt;&lt;SPAN&gt;2025&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;08&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;07&lt;/SPAN&gt; &lt;SPAN&gt;15&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;46&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;22&lt;/SPAN&gt;&lt;SPAN&gt;');&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;INSERT INTO test_datetimes (dt) VALUES ('&lt;/SPAN&gt;&lt;SPAN&gt;2025&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;08&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;14&lt;/SPAN&gt; &lt;SPAN&gt;11&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;07&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;32&lt;/SPAN&gt;&lt;SPAN&gt;');&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;INSERT INTO test_datetimes (dt) VALUES ('&lt;/SPAN&gt;&lt;SPAN&gt;2025&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;09&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;08&lt;/SPAN&gt; &lt;SPAN&gt;15&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;04&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;08&lt;/SPAN&gt;&lt;SPAN&gt;');&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;INSERT INTO test_datetimes (dt) VALUES ('&lt;/SPAN&gt;&lt;SPAN&gt;2025&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;09&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;08&lt;/SPAN&gt; &lt;SPAN&gt;20&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;57&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;18&lt;/SPAN&gt;&lt;SPAN&gt;');&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;INSERT INTO test_datetimes (dt) VALUES ('&lt;/SPAN&gt;&lt;SPAN&gt;2025&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;09&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;08&lt;/SPAN&gt; &lt;SPAN&gt;21&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;40&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;42&lt;/SPAN&gt;&lt;SPAN&gt;');&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;INSERT INTO test_datetimes (dt) VALUES ('&lt;/SPAN&gt;&lt;SPAN&gt;2025&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;09&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;08&lt;/SPAN&gt; &lt;SPAN&gt;22&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;24&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;11&lt;/SPAN&gt;&lt;SPAN&gt;');&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;INSERT INTO test_datetimes (dt) VALUES ('&lt;/SPAN&gt;&lt;SPAN&gt;2025&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;09&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;09&lt;/SPAN&gt; &lt;SPAN&gt;10&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;49&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;18&lt;/SPAN&gt;&lt;SPAN&gt;');&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;INSERT INTO test_datetimes (dt) VALUES ('&lt;/SPAN&gt;&lt;SPAN&gt;2025&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;09&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;09&lt;/SPAN&gt; &lt;SPAN&gt;11&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;18&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;32&lt;/SPAN&gt;&lt;SPAN&gt;');&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;INSERT INTO test_datetimes (dt) VALUES ('&lt;/SPAN&gt;&lt;SPAN&gt;2025&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;09&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;10&lt;/SPAN&gt; &lt;SPAN&gt;13&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;47&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;41&lt;/SPAN&gt;&lt;SPAN&gt;');&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;INSERT INTO test_datetimes (dt) VALUES ('&lt;/SPAN&gt;&lt;SPAN&gt;2025&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;09&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;29&lt;/SPAN&gt; &lt;SPAN&gt;15&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;59&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;32&lt;/SPAN&gt;&lt;SPAN&gt;');&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;INSERT INTO test_datetimes (dt) VALUES ('&lt;/SPAN&gt;&lt;SPAN&gt;2025&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;09&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;29&lt;/SPAN&gt; &lt;SPAN&gt;23&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;03&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;SPAN&gt;27&lt;/SPAN&gt;&lt;SPAN&gt;');&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;In Databricks:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;from pyspark.sql import functions as sf&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;from datetime import datetime&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;# No error here:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;ts_no_fraction = datetime(2025, 9, 28, 13, 51, 37)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;spark.table('&lt;/SPAN&gt;&lt;SPAN&gt;my_sql_server_catalog&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;dbo&lt;/SPAN&gt;&lt;SPAN&gt;.test_datetimes&lt;/SPAN&gt;&lt;SPAN&gt;').filter(sf.col('&lt;/SPAN&gt;&lt;SPAN&gt;dt&lt;/SPAN&gt;&lt;SPAN&gt;') &amp;gt;= sf.lit(ts_no_fraction)).display()&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;# We get the error here:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ts_with_fraction = datetime(2025, 9, 28, 13, 51, 37, 10)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;spark.table('&lt;/SPAN&gt;&lt;SPAN&gt;my_sql_server_catalog&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;dbo&lt;/SPAN&gt;&lt;SPAN&gt;.test_datetimes&lt;/SPAN&gt;&lt;SPAN&gt;').filter(sf.col('&lt;/SPAN&gt;&lt;SPAN&gt;dt&lt;/SPAN&gt;&lt;SPAN&gt;') &amp;gt;= sf.lit(ts_with_fraction)).display()&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 03 Oct 2025 18:19:22 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/error-filtering-by-datetime-lakehouse-federated-sql-server-table/m-p/133737#M49914</guid>
      <dc:creator>ClintHall</dc:creator>
      <dc:date>2025-10-03T18:19:22Z</dc:date>
    </item>
    <item>
      <title>Re: Error filtering by datetime Lakehouse Federated SQL Server table</title>
      <link>https://community.databricks.com/t5/data-engineering/error-filtering-by-datetime-lakehouse-federated-sql-server-table/m-p/133757#M49918</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/183964"&gt;@ClintHall&lt;/a&gt;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;I believe you’re running into a mismatch between how Spark/Databricks generates the literal and what SQL Server &lt;SPAN class=""&gt;datetime&lt;/SPAN&gt; can store.&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P class=""&gt;In SQL Server, the &lt;SPAN class=""&gt;datetime&lt;/SPAN&gt; type only supports milliseconds (3 decimal places).&amp;nbsp;&lt;A href="https://learn.microsoft.com/es-es/sql/t-sql/data-types/datetime-transact-sql?view=sql-server-ver17#description" target="_self"&gt;Docs&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P class=""&gt;When you pass a Python &lt;SPAN class=""&gt;datetime&lt;/SPAN&gt; without microseconds, Spark translates it into something like -&amp;gt;&amp;nbsp;&lt;STRONG&gt;&lt;SPAN&gt;'2025-09-28 13:51:37.000'&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&amp;nbsp;&lt;SPAN&gt;But if you pass a &lt;/SPAN&gt;&lt;SPAN class=""&gt;datetime&lt;/SPAN&gt;&lt;SPAN&gt; with microseconds, e.g.&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;STRONG&gt;datetime(2025, 9, 28, 13, 51, 37, 10) -&amp;gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN&gt;'2025-09-28 13:51:37.000010'&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;That’s 6 digits of fractional seconds, which SQL Server &lt;SPAN class=""&gt;datetime&lt;/SPAN&gt; cannot parse. When the filter is pushed down, SQL Server tries to convert that literal and fails with the conversion error you’re seeing.&lt;/P&gt;&lt;P class=""&gt;This happens because of &lt;SPAN class=""&gt;&lt;STRONG&gt;predicate pushdown&lt;/STRONG&gt;&lt;/SPAN&gt;: Spark translates your filter into SQL and sends it to the remote database, instead of filtering in Spark. This is usually good for performance (less data moved over the wire), but in your case it exposes the datatype mismatch.&lt;/P&gt;&lt;P class=""&gt;&amp;nbsp;&lt;/P&gt;&lt;P class=""&gt;&amp;nbsp;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;STRONG&gt;Check the actual SQL query being sent&lt;/STRONG&gt;&lt;UL&gt;&lt;LI&gt;&lt;P class=""&gt;Use &lt;SPAN class=""&gt;EXPLAIN&lt;/SPAN&gt; in Databricks to see the physical plan.&amp;nbsp;&lt;A href="https://docs.databricks.com/aws/en/sql/language-manual/sql-ref-syntax-qry-explain" target="_self"&gt;Docs&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;Or, if possible, capture the SQL query on the SQL Server side (e.g. via profiler or extended events) to confirm exactly how the literal looks.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;STRONG&gt;Workarounds&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P class=""&gt;Truncate/round your Python &lt;SPAN class=""&gt;datetime&lt;/SPAN&gt; values to milliseconds before using them in filters, so Spark generates something SQL Server accepts.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;If you have schema control, consider changing your column type to &lt;SPAN class=""&gt;datetime2&lt;/SPAN&gt;, which supports up to 7 fractional digits (microseconds). &lt;A href="https://learn.microsoft.com/es-es/sql/t-sql/data-types/datetime2-transact-sql?view=sql-server-ver17#datetime2-description" target="_self"&gt;Docs&lt;/A&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;Hope this helps :),&lt;BR /&gt;&lt;BR /&gt;Isi&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 04 Oct 2025 00:27:45 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/error-filtering-by-datetime-lakehouse-federated-sql-server-table/m-p/133757#M49918</guid>
      <dc:creator>Isi</dc:creator>
      <dc:date>2025-10-04T00:27:45Z</dc:date>
    </item>
    <item>
      <title>Re: Error filtering by datetime Lakehouse Federated SQL Server table</title>
      <link>https://community.databricks.com/t5/data-engineering/error-filtering-by-datetime-lakehouse-federated-sql-server-table/m-p/133979#M49981</link>
      <description>&lt;P&gt;Thanks, &lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/145555"&gt;@Isi&lt;/a&gt;. Very helpful.&amp;nbsp;&lt;/P&gt;&lt;P&gt;It would be nice if Lakehouse federation would do this for us (the same way that it knows SQL Server uses ISNULL where Spark SQl uses NVL). Is there a way to bring it the dev's attention?&lt;/P&gt;</description>
      <pubDate>Mon, 06 Oct 2025 16:47:39 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/error-filtering-by-datetime-lakehouse-federated-sql-server-table/m-p/133979#M49981</guid>
      <dc:creator>ClintHall</dc:creator>
      <dc:date>2025-10-06T16:47:39Z</dc:date>
    </item>
  </channel>
</rss>

