2017-01-15 41 views
1

我在Amazon redshift的sql代碼中看到某處,比較兩個日期時使用:: date。我想知道這三行代碼是否有區別:「:: date」在redshift中的應用是什麼?

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

回答

3

結果在所有三種情況下都是一樣的。

具體做法是:

  • start_date < '2016-01-01'試圖比較有varchar一個date,但亞馬遜紅移是足夠聰明的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 
相關問題