我在数据库中使用sql作为笔记本的语言。 想要从给定的日期获得星期几。 为此,我使用了to_char(日期,' fmday')。获取错误作为函数未在数据库中注册为临时或永久。有没有办法通过其他方式获得日期的名称。 日期格式为yyyymmdd
答案 0 :(得分:3)
您收到该错误,因为to_char
不是SparkSQL函数。您可以在此处查看ScalaDocs中的函数列表:https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.sql.functions $
如果您的日期是DateType,则可以在SparkSQL中执行dayofweek(date)
。
答案 1 :(得分:0)
我有办法得到星期几的名称,如下所示
DATE_FORMAT(TO_DATE( '20170821', 'YYYYMMDD'), 'EEEE')
现在我想传递一个整数数据类型的列,但是当我将它传递给查询时将null作为输出。请有人帮忙
答案 2 :(得分:0)
获取当天的名字
由于您想要获取当天的名称,您可以使用带有参数date_format
的{{1}}函数来获取日期名称,例如星期一。如果你想传入一个整数(例如1到7之间的数字),那么你可以只编写一个'EEEE'
语句,如:
CASE
注意我已将%sql
SELECT
dayofweek( CAST( '2018-12-31' AS DATE ) ) AS d,
date_format( CAST( '2018-12-31' AS DATE ), 'EEEE' ) AS dayname,
CASE dayofweek( CAST( '2018-12-31' AS DATE ) )
WHEN 1 THEN 'Monday'
WHEN 2 THEN 'Tuesday'
WHEN 3 THEN 'Wednesday'
WHEN 4 THEN 'Thursday'
WHEN 5 THEN 'Friday'
WHEN 6 THEN 'Saturday'
WHEN 7 THEN 'Sunday'
ELSE 'Unknown'
END AS caseTest
编码为从第1天 - 星期一开始一周,这与CASE
默认值不同;这可能是这样做的一个原因,即你想要一个不同的默认值。
我的结果: