If you do it frequently. You can write a function to do it for you. 
You can do by two ways.
- Check first then insert or update.
    CREATE OR REPLACE FUNCTION insert_test_table(int, timestamp, varchar)
    RETURNS int AS
    $BODY$
    BEGIN
        IF (EXISTS(SELECT id FROM test_table WHERE id = $1)) THEN
            UPDATE test_table SET dt = $2, amt = $3 WHERE id = $1;
            RETURN 2;
        ELSE
            INSERT INTO test_table (id, dt, amt) VALUES($1, $2, $3);
            RETURN 1;
        END IF;
        RETURN 0;
        END;
    $BODY$
    LANGUAGE plpgsql;
- Use Exception:
    CREATE OR REPLACE FUNCTION insert_test_table(int, timestamp, varchar)
    RETURNS int AS
    $BODY$
    BEGIN
        INSERT INTO test_table (id, dt, amt) VALUES($1, $2, $3);
        RETURN 1;
        EXCEPTION WHEN unique_violation THEN 
                BEGIN
                    UPDATE test_table SET dt = $2, amt = $3 WHERE id = $1;  
                    RETURN 2
                END;
    END;
    $BODY$
    LANGUAGE plpgsql;
The second way maybe conflict with other unique constraint, so be careful.