Mysql | Postgresql |
ifnull(컴럼명) | coalesce(컬럼명) |
DATE_FORMAT(NOW(), '%Y%m%d%H%i%s') | to_char(now(), 'yyyymmddhh24miss') |
DATE_FORMAT(t1.col, '%Y-%m-%d') | concat(substring(t1.col,1,4),'-',substring(t1.col,5,2), '-', substring(t1.col,7,2)) |
DATE_FORMAT(now(), '%Y%m%d') | to_char(now(), 'yyyymmdd') |
LIMIT ${startNo}, ${pageSize} | limit ${pageSize} offset ${startNo} |
trs_dd = DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 MONTH),'%Y%m00') | trs_dd = concat(substring(to_char(NOW() + INTERVAL '-1 MONTH', 'yyyymmdd'), 1, 6), '00') |
FORMAT(sum(t1.use_cnt),0) as use_cnt | to_char(sum(t1.use_cnt), '999,999,999,999') as use_cnt |
DATE_FORMAT(date_add(STR_TO_DATE((select max(hist_occr_seq_no) from TB_AG011H ag011h),'%Y%m%d%H%i%s'),interval +1 second), '%Y%m%d%H%i%s') | select to_char(to_timestamp((select max(hist_occr_seq_no) from tb_ag011h tah), 'yyyymmddhh24miss') + interval '+1 second', 'yyyymmddhh24miss') |
FORMAT(coalesce(sum(api_use_cnt),0),0) as api_use_cnt | to_char(coalesce(sum(api_use_cnt),0),'9,999,999,999') as api_use_cnt |
Mysql에서 자동으로 숫자가 증가하는 auto_increment가 있을 경우
Postgre에서는 insert문 작성시 직접 값을 넣어야 한다..
디비버 사용시 아래와 같이 DDL문장은
해당 테이블 오른쪽 클릭 > SQL 생성 > DDL 하면 나온다.
예)
CREATE TABLE `tb_am005m` (
`api_id_cd` varchar(10) COLLATE utf8_bin NOT NULL COMMENT 'api id코드',
`trs_gbn` varchar(1) COLLATE utf8_bin NOT NULL COMMENT '거래구분',
`polic_cd` int(10) NOT NULL AUTO_INCREMENT COMMENT '정책코드 ',
`polic_apply_dd` varchar(8) COLLATE utf8_bin NOT NULL COMMENT '정책적용일자',
`polic_expir_dd` varchar(8) COLLATE utf8_bin DEFAULT NULL COMMENT '정책 만료일자',
`sch_tx_bas_amt` int(9) DEFAULT 0 COMMENT '정기 건당기본금액',
`sch_tx_dc_amt` int(9) DEFAULT 0 COMMENT '정기 건당경감금액',
`nsch_tx_bas_amt` int(9) DEFAULT 0 COMMENT '비정기 건당기본금액',
`nsch_tx_dc_amt` int(9) DEFAULT 0 COMMENT '비정기 건당경감금액',
`frst_reg_id` varchar(20) COLLATE utf8_bin NOT NULL COMMENT '최초등록id',
`frst_reg_dttm` varchar(14) COLLATE utf8_bin NOT NULL COMMENT '최초등록일시',
`last_proc_id` varchar(20) COLLATE utf8_bin NOT NULL COMMENT '최종처리id',
`last_proc_dttm` varchar(14) COLLATE utf8_bin NOT NULL COMMENT '최종처리일시',
`last_proc_pgm_id` varchar(100) COLLATE utf8_bin NOT NULL COMMENT '최종처리프로그램id',
PRIMARY KEY (`api_id_cd`,`trs_gbn`,`polic_cd`),
UNIQUE KEY `polic_cd` (`polic_cd`)
) ENGINE=InnoDB AUTO_INCREMENT=106 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='api 정산정책기본';
아래 그림과 같이 Postgre DB에서 Sequences에 해당 테이블을 추가
insert문에도 추가
<insert id="insertDataCalculate" parameterType="java.util.HashMap">
INSERT INTO tb_am005m(
api_id_cd,
trs_gbn,
polic_cd,
polic_apply_dd,
<if test="polic_expir_dd != null">
polic_expir_dd,
</if>
sch_tx_bas_amt,
sch_tx_dc_amt,
nsch_tx_bas_amt,
nsch_tx_dc_amt,
frst_reg_id,
frst_reg_dttm,
last_proc_id,
last_proc_dttm,
last_proc_pgm_id)
VALUES (
#{api_id_cd},
#{trs_gbn},
nextval('seq_tb_am005m'),
#{polic_apply_dd},
<if test="polic_expir_dd != null">
#{polic_expir_dd},
</if>
#{sch_tx_bas_amt},
#{sch_tx_dc_amt},
#{nsch_tx_bas_amt},
#{nsch_tx_dc_amt},
#{frst_reg_id},
to_char(now(), 'yyyymmddhh24miss'),
#{last_proc_id},
to_char(now(), 'yyyymmddhh24miss'),
#{last_proc_pgm_id})
<selectKey resultType="int" keyProperty="polic_cd" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
</insert>
'Database' 카테고리의 다른 글
Redis 명령어 (0) | 2024.07.26 |
---|---|
Redis 설치 및 실행 테스트 (0) | 2024.07.24 |
[Oracle DB] LIKE / ESCAPE (1) | 2024.07.14 |
[MySQL] LIMIT, OFFSET (0) | 2024.07.13 |
MS SQL, Oracle DB, MySQL 현재 일시 (0) | 2024.07.11 |