Sql 在Terdata中创建日期列表

Sql 在Terdata中创建日期列表,sql,date,teradata,prompt,Sql,Date,Teradata,Prompt,我继承了一份带有两个日期提示的报告。用户从报告上的日历中选择第一个日期。然后,用户在上面的查询创建的列表中选择一个日期。如果用户在第一个提示中选择2016年3月1日,将生成以下列表: select calendar_date as DATEO from sys_calendar.CALENDAR where calendar_date between ? and cast(? as date)+31 order by calendar_date 我有两个问题: 是否有更好的查询用于生成此列表

我继承了一份带有两个日期提示的报告。用户从报告上的日历中选择第一个日期。然后,用户在上面的查询创建的列表中选择一个日期。如果用户在第一个提示中选择2016年3月1日,将生成以下列表:

select calendar_date as DATEO from sys_calendar.CALENDAR
where calendar_date between ?  and cast(? as date)+31
order by calendar_date
我有两个问题:

  • 是否有更好的查询用于生成此列表
  • 是否有办法格式化此列表,以便只显示日期,例如,2016年3月31日、2016年4月1日。我想删除每条线路上的12:00:00 AM

  • 我相信我们正在使用Teradata 14。

    sys.calendar
    非常快。或者,您可以将Teradata的Period
    Expand On
    功能合并到您的Unshawn查询中,但我不知道您会发现使用它可以获得更快的性能;我想这取决于查询。至于日期格式,
    calendar\u date
    字段已经是
    date
    ,因此我不确定您的
    12:00:00 am
    来自哪里(可能是您的客户?)。您可以执行
    选择日历日期(日期,格式为“mm/dd/yyyy”)
    并查看这是否有帮助。@jnevil…………谢谢。这对我很有用……刮胡子
     3/1/2016 12:00:00 AM
     3/2/2016 12:00:00 AM
     3/3/2016 12:00:00 AM
     ......
     3/31/2016 12:00:00 AM
     4/1/2016 12:00:00 AM