【问题标题】:how can I get date in presto sql如何在 presto sql 中获取日期
【发布时间】:2021-10-07 20:24:20
【问题描述】:

我在下面有一个代码,但它会引发错误。 如何获取 2018-01-01 12 周后的日期并使用案例陈述?

select
case when
date between cast('2018-01-01' as date) and DATE_ADD('week',12,cast('2018-01-01' as date)) -interval '1' day
then 'in 12 weeks' as period
from aaa limit 1

【问题讨论】:

  • 错误是???通常在as period之前会有一个end
  • @Nick.McDermaid 雅典娜中不会显示任何错误信息..

标签: sql presto


【解决方案1】:

您的case 语句错过了关闭end

WITH dataset AS (
    SELECT * FROM (VALUES   
       (DATE '2018-01-03'),
       (DATE '2018-04-04')
 ) AS t (date))


SELECT 
  CASE 
    WHEN date BETWEEN Cast('2018-01-01' AS date) AND date_add('week', 12, cast('2018-01-01' AS date)) - INTERVAL '1' day 
      THEN 'in 12 weeks' 
  END AS period 
FROM 
  dataset 
LIMIT 
  1

【讨论】:

  • 错误信息为无。
  • @SJW 答案中的查询对我来说很好(使用 Athena 进行测试)。
  • 当要检索的日期列是varchar时,你能告诉我怎么做吗?谢谢
  • @SJW 取决于您需要的格式,可以是强制转换(就像您在BETWEEN 中所做的那样)或解析它(例如使用date_parse)。
  • @SJW 这是另一个问题。它也应该是 cast (date as date) BETWEEN 而不是 cast(date BETWEEN .....
猜你喜欢
  • 2020-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-20
  • 2019-09-30
  • 2019-02-28
  • 2021-09-27
  • 1970-01-01
相关资源
最近更新 更多