咨询Teradata指定日期函数在Snowflake中的替代方案
Snowflake对应Teradata日期函数的替代方案
以下是Teradata目标日期函数在Snowflake中的等价实现:
DAYNUMBER_OF_CALENDAR()
Teradata中该函数返回日期所属年份的第几天,Snowflake可直接使用DAYOFYEAR()函数实现:-- Teradata写法 SELECT DAYNUMBER_OF_CALENDAR(CURRENT_DATE); -- Snowflake等价写法 SELECT DAYOFYEAR(CURRENT_DATE);DayOccurrence_Of_Month()
Teradata中该函数返回指定日期是当月第几个目标星期几(比如当月第2个周一),Snowflake可通过计算当月周差实现基础逻辑,若需指定星期几可结合星期判断:-- Teradata示例:返回当前日期是当月第几个周二 SELECT DayOccurrence_Of_Month(CURRENT_DATE, 'Tuesday'); -- Snowflake等价实现(以当前日期对应的星期几为例) SELECT DATE_PART('week', CURRENT_DATE) - DATE_PART('week', DATE_TRUNC('month', CURRENT_DATE)) + 1;注:若需指定特定星期几,可先筛选出当月同星期几的日期集合,再计算目标日期在集合中的序号。
WeekNumber_Of_Calendar()
Teradata中该函数返回日期所属年份的周数,Snowflake使用WEEKOFYEAR()函数,可通过设置WEEK_START参数匹配Teradata的周起始规则(默认周一为起始):-- Teradata写法 SELECT WeekNumber_Of_Calendar(CURRENT_DATE); -- Snowflake等价写法 SET WEEK_START = 1; SELECT WEEKOFYEAR(CURRENT_DATE);MonthNumber_Of_Quarter()
Teradata中该函数返回日期所在季度的第几个月(1-3),Snowflake可通过月份与季度的计算得到:-- Teradata写法 SELECT MonthNumber_Of_Quarter(CURRENT_DATE); -- Snowflake简洁实现 SELECT DATE_PART('month', CURRENT_DATE) - (DATE_PART('quarter', CURRENT_DATE) - 1) * 3;QuarterNumber_Of_Year()
Teradata中该函数返回日期所属的季度(1-4),Snowflake直接使用QUARTER()函数:-- Teradata写法 SELECT QuarterNumber_Of_Year(CURRENT_DATE); -- Snowflake等价写法 SELECT QUARTER(CURRENT_DATE);
内容的提问来源于stack exchange,提问作者Kyle
相关产品推荐
相关产品推荐

