sql >> Database teknologi >  >> RDS >> Oracle

Hvordan sammenligner man to DATE-værdier kun baseret på datodelen i Oracle?

For denne tilstand behøver du kun at TRUNC den højre side:

WHERE date_occured >= TRUNC(CURRENT_DATE - 30)

Hvorfor? For hvis TRUNC(date_occured) er senere end TRUNC(CURRENT_DATE - 30), så er ethvert tidspunkt efter TRUNC(date_occured) også nødt til at være senere end TRUNC(CURRENT_DATE - 30).

Det er åbenbart altid rigtigt, at date_occured>=TRUNC(date_occured) (tænk over det).

Logikken siger, at hvis A>=B og B>=C, så følger det, at A>=C

Erstat nu:

  • A:date_occured
  • B :TRUNC(dato_opstod)
  • C :TRUNC(CURRENT_DATE - 30)


  1. MySQL bruger ikke indekser (Using filesort) ved brug af ORDER BY

  2. Forskellen mellem tidsstempler i millisekunder i Oracle

  3. MySQL CAST som DATO

  4. Leder efter hvad der svarer til dictcursor i flaskext.mysql