Max Gekk created SPARK-57528:
--------------------------------

             Summary: Support nanosecond-precision timestamps in the 
`unix_timestamp` function
                 Key: SPARK-57528
                 URL: https://issues.apache.org/jira/browse/SPARK-57528
             Project: Spark
          Issue Type: Sub-task
          Components: SQL
    Affects Versions: 4.3.0
            Reporter: Max Gekk


h3. Background
Part of the SPARK-56822 umbrella. {{unix_timestamp(timestamp)}} (and the no-arg 
form)
returns the number of whole seconds since the Unix epoch as {{BIGINT}}. It 
currently accepts
{{TimestampType}}, {{DateType}} and strings, but not the new 
nanosecond-precision timestamp
types.

h3. Proposal
Allow {{unix_timestamp}} to accept nanosecond-precision timestamps
({{TIMESTAMP_LTZ(p)}} / {{TIMESTAMP_NTZ(p)}}, i.e. {{AnyTimestampNanoType}}) in 
its
timestamp-argument form. The result stays {{BIGINT}} seconds; sub-second digits 
are
truncated, consistent with current behavior.

* Value: {{Math.floorDiv(epochMicros, MICROS_PER_SECOND)}}, read from 
{{TimestampNanosVal}}.
* No overflow concern (result is seconds-granular).

{code:sql}
SELECT unix_timestamp(TIMESTAMP_LTZ '2008-12-25 15:30:00.123456789');
-- 1230219000
{code}

h3. Implementation notes
* Extend the input type check of the {{UnixTime}} base ({{UnixTimestamp}} / 
{{ToUnixTimestamp}})
  to include {{AnyTimestampNanoType}}.
* In the timestamp branch, read {{epochMicros}} from {{TimestampNanosVal}} 
instead of a plain
  {{Long}}.
* Interpreted + codegen paths.

h3. Out of scope
* The string-parsing overload {{unix_timestamp(str, fmt)}} producing nanosecond 
precision -
  tracked separately under Parsing/Formatting (P1).

h3. Acceptance criteria
* {{unix_timestamp}} accepts {{TIMESTAMP_LTZ(p)}} / {{TIMESTAMP_NTZ(p)}} and 
returns the
  correct whole-second {{BIGINT}}.
* Existing micros / date / string behavior unchanged.
* Unit tests + golden files added.

Parent: SPARK-56822



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to