Sql 什么是“应用”:日期“;红移?

Sql 什么是“应用”:日期“;红移?,sql,amazon-redshift,Sql,Amazon Redshift,我在Amazon redshift的sql代码中看到,在比较两个日期时使用::date。我想知道这三行代码之间有什么区别: start_date < '2016-01-01' start_date < '2016-01-01'::date start_date < date('2016-01-01') 开始日期

我在Amazon redshift的sql代码中看到,在比较两个日期时使用::date。我想知道这三行代码之间有什么区别:

start_date < '2016-01-01'
start_date < '2016-01-01'::date
start_date < date('2016-01-01')
开始日期<'2016-01-01'
开始日期<'2016-01-01':日期
开始日期<日期('2016-01-01')

这三种情况的结果都是一样的

具体而言:

  • start\u date<'2016-01-01'
    正在尝试将
    date
    varchar
    进行比较,但Amazon Redshift足够聪明,可以将
    varchar
    转换为日期格式,以便进行比较

  • start_date<'2016-01-01':date
    正在对两个
    date
    字段进行适当的比较。这相当于日期“2016-01-01”

  • start\u date
    似乎也在比较
    date
    字段,尽管文档中没有这种语法

使用
:date
的一个更有用的示例是在比较两个时间戳时,您只希望比较日期,例如:

select end::date - start::date as days FROM table