<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>UTC on Geoff Corey&#39;s Blog</title>
    <link>https://blog.geoffcorey.com/tags/utc/</link>
    <description>Recent content in UTC on Geoff Corey&#39;s Blog</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Thu, 17 Apr 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://blog.geoffcorey.com/tags/utc/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Snowflake: conversion of timestamp NTZ to UTC with offset</title>
      <link>https://blog.geoffcorey.com/posts/snowflake-timestamp-ntz-to-utc-with-offset/</link>
      <pubDate>Thu, 17 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.geoffcorey.com/posts/snowflake-timestamp-ntz-to-utc-with-offset/</guid>
      <description>&lt;h2 id=&#34;problem&#34;&gt;Problem&lt;/h2&gt;
&lt;p&gt;Code attempting to transform Snowflake &lt;code&gt;timestamp_ntz&lt;/code&gt; values stored in &lt;code&gt;America/New_York&lt;/code&gt; local format into UTC time with offset notation did not account for Daylight Savings Time.&lt;/p&gt;
&lt;h2 id=&#34;solution&#34;&gt;Solution&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;ALTER&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SESSION&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SET&lt;/span&gt; TIMEZONE &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;America/New_York&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    TO_TIMESTAMP_NTZ(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;12/15/2023 01:02:03&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;mm/dd/yyyy hh24:mi:ss&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; mytimestamp,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    mytimestamp::timestamp_tz &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; orig,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    TO_VARCHAR(mytimestamp, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;YYYY-MM-DDTHH24:MI:SS.FF3-TZHTZM&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; datetime_wrong,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    CONVERT_TIMEZONE(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;UTC&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;America/New_York&amp;#39;&lt;/span&gt;,TO_TIMESTAMP_LTZ(mytimestamp)) &lt;span style=&#34;color:#66d9ef&#34;&gt;AS&lt;/span&gt; converted_ts,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    DATEDIFF(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hour&amp;#39;&lt;/span&gt;, converted_ts, mytimestamp) &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; hourdiff,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    TO_VARCHAR(converted_ts) &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;-0&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; hourdiff &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;:00&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; datetime;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The key involves using &lt;code&gt;CONVERT_TIMEZONE()&lt;/code&gt; with explicit source and target timezones, which properly handles DST transitions.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
