" :: date"的应用是什么?在红移?

时间:2017-01-15 15:36:48

标签: sql amazon-redshift

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

start_date < '2016-01-01'
start_date < '2016-01-01'::date
start_date < date('2016-01-01')

1 个答案:

答案 0 :(得分:4)

在所有三种情况下结果相同。

具体做法是:

  • start_date < '2016-01-01'正在尝试将datevarchar进行比较,但亚马逊Redshift足够聪明,可以将varchar转换为日期格式以进行比较

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

  • start_date < date('2016-01-01')似乎也在比较date字段,尽管Date and Time Functions文档中没有该语法。

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

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