将小工具的日期'yyyy-mm-dd'转换为时间戳错误

时间:2019-10-10 10:29:16

标签: databricks azure-databricks

我有一个名为'filedate'的小部件,您可以在其中指定日期,如果您以'yyyy-mm-dd'格式输入日期,我的示例将使用'2019-10-01'。

我通过以下方法从小部件中获取值:

val fileloaddate = dbutils.widgets.get("filedate")

如果我打印文件加载日期,它显示为2019-10-01,则需要在查询中使用它,所以如果我执行“选择to_timestamp($ {fileloaddate},“ yyyy-mm-dd”)”,则会出错因为它看到变量为'((2019-8)-18)。例如,如果我将字符串转换为日期,则

select to_timestamp(to_date(${prundate}), "yyyy-mm-dd")

错误为'无法解析'CAST((((2019-8)-18)AS DATE)'

select to_timestamp(to_date('2019-10-01'), "yyyy-mm-dd")

工作正常。我已经搜索了答案,但似乎看不到我做错了。

谢谢

2 个答案:

答案 0 :(得分:0)

  

Azure DataBrick您可以使用getArgument将日期转换为期望输出

dbutils.widgets.text("x","2018-09-12")
select to_timestamp(to_date(getArgument("x")), "yyyy-mm-dd")

希望这对您有帮助

答案 1 :(得分:0)

如果 Scala 被禁用,那么您需要使用旧方法从小部件中检索 sql 参数 . select * from database where parameter='$file'

对于 sql,我可以将日期作为文本传递

%sql 创建小部件 'StartDate' DEFAULT 'YYYY-MM-DD'(这只是提醒用户以 sql 查询可以使用的格式输入日期的文本)

select * from my_table 介于 '$StartDate' 和 '$EndDate' 之间

https://docs.databricks.com/notebooks/widgets.html#legacy-input https://docs.databricks.com/notebooks/widgets.html