Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle SQL сравнява дати

В Oracle, DATE винаги има компонент време. Вашият клиент може или не може да покаже времевия компонент, но той все още е там, когато се опитате да направите сравнение за равенство. Също така винаги искате да сравнявате датите с дати, а не с низове, които използват NLS_DATE_FORMAT на текущата сесия за извършване на неявни преобразувания, което ги прави доста крехки. Това ще включва или ANSI литерали за дата, или изричен to_date обаждания

Можете да използвате TRUNC функция за съкращаване на DATE до полунощ

SELECT *
  FROM porder
 WHERE trunc(odate) = date '2013-10-04'

Или можете да направите сравнение на диапазон (което ще бъде по-ефективно, ако можете да се възползвате от индекс на odate )

SELECT *
  FROM porder
 WHERE odate >= to_date( '04-Oct-2013', 'DD-Mon-YYYY' )
   AND odate <  to_date( '05-Oct-2013', 'DD-Mon-YYYY' );



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORACLE - regexp_substr за връщане на нулеви стойности

  2. Как да издигнем изключение в тригер? Има ли начин да се направи това?

  3. Как да получа списък със заключени потребители в база данни на Oracle?

  4. NPM Oracle:Вмъкване на BLOB

  5. Предупреждение:ocifetch() [function.ocifetch]:ORA-24374:дефинирайте не е направено преди извличане или изпълнете и извлечете