我在Amazon redshift的sql代码中看到某个地方::比较两个日期时使用了date。我想知道这三行代码之间有什么区别:
start_date < '2016-01-01'
start_date < '2016-01-01'::date
start_date < date('2016-01-01')
答案 0 :(得分:4)
在所有三种情况下结果相同。
具体做法是:
start_date < '2016-01-01'
正在尝试将date
与varchar
进行比较,但亚马逊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