“::date”在红移中的应用是什么?

sia*_*sia 3 sql amazon-redshift

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

start_date < '2016-01-01'
start_date < '2016-01-01'::date
start_date < date('2016-01-01')
Run Code Online (Sandbox Code Playgroud)

Joh*_*ein 6

在所有三种情况下,结果都是一样的。

具体来说:

  • start_date < '2016-01-01'正在尝试将 adate与 a进行比较varchar,但 Amazon Redshift 足够聪明,可以将varchara转换为日期格式以进行比较。

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

  • start_date < date('2016-01-01')似乎也在比较date字段,尽管日期和时间函数文档中没有该语法。

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

select end::date - start::date as days FROM table
Run Code Online (Sandbox Code Playgroud)