如何将指定T-SQL日期计算语句转换为Databricks SparkSQL
T-SQL转Databricks SparkSQL实现
先拆解原T-SQL的核心逻辑:获取当前日期所在季度的上一个季度的最后一天,对应SparkSQL的实现代码如下:
SELECT last_day(add_months(make_date(year(current_date()), (month(current_date()) / 4 + 1) * 3, 1), -3))
关键函数对应说明
- 原T-SQL的
sysdatetime()→ SparkSQL用current_date()(仅需日期部分时更高效,若需完整时间戳可替换为current_timestamp()) - 原T-SQL的
datefromparts(year, month, day)→ SparkSQL的make_date(year, month, day) - 原T-SQL的
dateadd(quarter, -1, date)→ SparkSQL的add_months(date, -3)(一个季度等价于3个月) - 原T-SQL的
eomonth(date)→ SparkSQL的last_day(date)
逻辑验证示例(以当前日期为2024年5月为例)
month(current_date())得到5,(5/4 +1)*3计算为6(当前季度是Q2,最后一个月为6月)make_date(2024,6,1)生成2024-06-01add_months(..., -3)往前推3个月得到2024-03-01last_day()得到2024-03-31,即上一个季度(Q1)的最后一天,和原T-SQL执行结果完全一致
内容的提问来源于stack exchange,提问作者Patterson
相关产品推荐
相关产品推荐

