안녕하세요~
win2000서버에 postgresql을 설치하고 클라리언트에서 프로그래밍하면서
서버의 현재일시를 구할려니 다른 db하고는 좀 다르군요.
datetime gtime
select now() into :gtime from t_test;
이런 스크립트를 쓰니까 DB Commit한 시간만 리턴하던데,
어떻게해야 현재일시를 구할수있죠? 테이블명을 빼면 구문 에러가 나고...
답변좀 부탁드립니다~
그냥 쿼리로 select now() 하시면 서버시간이 나올텐데요?
select into 가 있는걸 보니 function 일것 같은데 http://database.sarang.net/database/postgres/manual/manual-8.0/sql-createfunction.html 페이지를 참조하셔서 함수의 타입을 VOLATILE 으로 해주시면 함수를 캐쉬하지 않아서 정상적으로 돌아갈 듯 싶습니다..
함수가 아니라 프로그래밍 언어 script입니다.
select now() 의 결과값은 DB Connect시간을 리턴해주더군요.
http://www.postgresql.org/docs/8.1/interactive/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT
를 보니 다음과 같이 나오네요
It is important to know that CURRENT_TIMESTAMP and related functions return the start time of the current transaction; their values do not change during the transaction.
한 트랜잭션속에서 실시간을 구하려면 따로 함수를 만드셔야 될거같슴니다.
해당 트랜잭션이 시작하는 시점에 DATETIME-CURRENT값을 가져오고 그뒤론 갱신이 안되네요
트랜젝션이 시작되면 그 트랜젝션 내의 시간은 트랜젝션이 시작된 시간으로 고정됩니다. 검색해 보시면 관련된 내용이 있을겝니다~
당시 "멋지다" 로 표현된듯? ㅎ;