web-dev-qa-db-ja.com

where句の現在の日付

常に入力せずに現在の日付をwhere句に入力するにはどうすればよいですか?

Select SALEITEMS.SKU,
       STOCK.SHORTDESC,
       SALEITEMS.SALEPRICEEX,                    
       SALEITEMS.COSTPRICEEX,
       SUM(((SALEITEMS.SALEPRICEEX - SALEITEMS.COSTPRICEEX) / 
             SALEITEMS.SALEPRICEEX) * 100) AS GP    
  From SALEITEMS
 Inner Join STOCK On SALEITEMS.SKU = STOCK.SKU 
 where SALEITEMS.FP_DATE = '13 Nov 2018'
 group by 1,2,3,4                              
1
Kevin Goosen

current_dateを使用:

where SALEITEMS.FP_DATE = current_date

これは、FP_DATEのデータ型がDATEであることを前提としています。

FP_DATEtimestamp列の場合、上記は列の時間部分が00:00:00である行のみを返します。時間部分を無視するには、列をdate値にキャストします。

where cast(SALEITEMS.FP_DATE as date) = current_date

ただし、これは列のインデックスを使用しないため、十分に高速ではない可能性があります。その場合、通常のアプローチは範囲クエリを使用することです:

where SALEITEMS.FP_DATE >= current_date
  and SALEITEMS.FP_DATE < current_date + 1

current_date + 1は「明日」です(午前0時)