에 타임 스탬프 비교하여 서로 다른 값을 반환 (큰 하나의 일부로 사용을하지만, 나는이 질문에 대한 세그먼트를 격리 한) :PostgreSQL의 기능은 내가 조금 기능이 온/오프
CREATE OR REPLACE FUNCTION weird_date_issue_function() RETURNS INT AS
$BODY$
DECLARE
deleted_count INT := 0;
BEGIN
SELECT count(*)
INTO deleted_count
FROM user_verifications
WHERE verified = FALSE AND now() - create_date > INTERVAL '1 second';
RETURN deleted_count;
END;
$BODY$
LANGUAGE plpgsql;
user_verification
에는 검증을 위해 1 초보다 오래된 확인되지 않은 항목이 있습니다.
내 IDE에서 select weird_date_issue_function();
전화
를 반환하지만 잠깐 jdbc.queryForObject("SELECT weird_date_issue_function()", Integer.class);
를 사용하여. AND now() - create_date > INTERVAL '1 second';
부분을 주석 처리하면 응용 프로그램에서도 1을 얻습니다. 여기서 무슨 일이 일어나고있는거야?
'now()'는 ** 트랜잭션 ** 시작시의 시간을 반환합니다. 따라서 자동 커밋을 사용하지 않고 실행하면 "오래 전"일 수 있습니다. 다른 시간 기능 (https://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT) 중 하나를 사용하십시오. 'clock_timestamp()' –