programing

Oracle, PostgreSQL 및 SQL Server에서 타임스탬프를 비교하는 일반적인 방법

muds 2023. 6. 25. 20:38
반응형

Oracle, PostgreSQL 및 SQL Server에서 타임스탬프를 비교하는 일반적인 방법

타임스탬프가 특정 날짜 범위에 해당하는지 확인하는 SQL 쿼리를 작성하고 있습니다.

PostgreSQL에 기록했지만 Oracle 및 SQL Server에서는 작동하지 않습니다.

AND creation_date < (CURRENT_TIMESTAMP - interval '5 days')
AND creation_date >= (CURRENT_TIMESTAMP - interval '15 days')

다른 데이터베이스 간에 타임스탬프를 비교하는 일반적인 방법이 있습니까?

저는 SQL Server 전문가는 아니지만 Oracle 및 Postgres에서 작동하는 것으로 알고 있으며 MSSQL에서 작동할 수도 있지만 ATM을 테스트할 방법이 없습니다.

AND creation_date < (CURRENT_TIMESTAMP - interval '5' day)
AND creation_date >= (CURRENT_TIMESTAMP - interval '15' day)

또는 타임스탬프 대신 날짜 유형을 사용하는 경우 이 작업을 수행할 수 있지만 MSSQL에서는 작동하지 않을 것으로 확신합니다.그리고 Oracle과 Pg는 DATE 유형이 상당히 다릅니다.

AND creation_date < CURRENT_DATE - 5
AND creation_date >= CURRENT_DATE - 15

OMG 포니에 대한 설명에서 언급했듯이, 타임스탬프가 아닌 날짜 유형에만 추가할 수 있습니다. (오라클은 자동으로 날짜까지 타임스탬프를 캐스트합니다.)

postgresql에서 두 타임스탬프를 비교하는 방법, 다음은 true를 반환합니다.

select to_timestamp('2010-01-01 10:10:85.123', 'YYYY-MM-dd HH:MI:SS.MS') <
    to_timestamp('2012-01-01 10:10:85.123', 'YYYY-MM-dd HH:MI:SS.MS');

true를 반환합니다. 왜냐하면2012다음 이후입니다.2010

저는 모든 데이터베이스 엔진에서 작동하는 공통 구문이 있다고 생각하지 않습니다.SQL Server에서는 다음과 같이 작업합니다.

AND creation_date BETWEEN DateAdd(dd, -5, GetUtcDate()) AND DateAdd(dd, -15, GetUtcDate())

오라클에 대해 잘 모르겠어요...

Oracle(이 두 솔루션을 모두 테스트했습니다)

AND (creation_date BETWEEN sysdate-15 AND sysdate-6)

이 구문도 유효합니다.

AND (creation_date BETWEEN current_timestamp - INTERVAL '15' DAY 
                       AND current_timestamp - INTERVAL '6' DAY)

SYSDATE 및 CURRENT_TIMESTAMP는 동의어입니다(예: 주석 참조).

BETWEEN은 경계를 포함한 을 반환합니다.날짜-15에서 날짜-5 사이의 값을 찾고 있으므로 BETWEEN을 사용할 때 -15에서 -6 사이의 값을 지정해야 합니다.BETWEEN 식에 상한 -5를 사용한 답은 틀렸습니다.

select * from timing where (db_time < CURRENT_DATE) AND (db_time > (CURRENT_DATE - INTERVAL '1' DAY)) ;

다시 말씀드리지만 Oracle 전용입니다. 시간이 TIMESTAMP(3) 데이터 유형이라고 가정하면 이 작업을 수행할 수 있습니다.

select * from MYTABLE where intime >= to_timestamp('2014-10-01 7:00:56', 'YYYY-MM-dd HH24:MI:SS')

언급URL : https://stackoverflow.com/questions/2505382/common-way-to-compare-timestamp-in-oracle-postgresql-and-sql-server

반응형