1. Кодировки базы данных ~~~~~~~~~~~~~~~~~~~~~~~~ Проверим локали с кодировкой koi8 => \! locale -a|grep koi8 ru_RU.koi8r Создаем БД => create database db22 => template template0 => encoding 'KOI8R' => lc_ctype 'ru_RU.koi8r' => lc_collate 'ru_RU.koi8r'; CREATE DATABASE Получаем логическую копию => \! pg_dump -C -d db22 -- -- PostgreSQL database dump -- -- Dumped from database version 9.5.3 -- Dumped by pg_dump version 9.5.3 SET statement_timeout = 0; SET lock_timeout = 0; SET client_encoding = 'KOI8R'; SET standard_conforming_strings = on; SET check_function_bodies = false; SET client_min_messages = warning; SET row_security = off; -- -- Name: db22; Type: DATABASE; Schema: -; Owner: postgres -- CREATE DATABASE db22 WITH TEMPLATE = template0 ENCODING = 'KOI8R' LC_COLLATE = 'ru_RU.koi8r' LC_CTYPE = 'ru_RU.koi8r'; ALTER DATABASE db22 OWNER TO postgres; \connect db22 SET statement_timeout = 0; SET lock_timeout = 0; SET client_encoding = 'KOI8R'; SET standard_conforming_strings = on; SET check_function_bodies = false; SET client_min_messages = warning; SET row_security = off; -- -- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: -- CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; -- -- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: -- COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; -- -- Name: public; Type: ACL; Schema: -; Owner: postgres -- REVOKE ALL ON SCHEMA public FROM PUBLIC; REVOKE ALL ON SCHEMA public FROM postgres; GRANT ALL ON SCHEMA public TO postgres; GRANT ALL ON SCHEMA public TO PUBLIC; -- -- PostgreSQL database dump complete -- Такую копию можно восстановить только на сервере, на котором установлена локаль ru_RU.koi8r 2. Получение номера дня недели ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Для получения номера дня недели есть две форматные маски ID и D Если нужно быть уверенным, что понедельник это первый день недели, то используем ID => select to_char(now(), 'TMDay - день недели номер ID'); to_char ------------------------------- Четверг - день недели номер 4 (1 row) В противном случае используем D => select to_char(now(), 'TMDay - день недели номер D'); to_char ------------------------------- Четверг - день недели номер 5 (1 row) Отметим, что получение номера дня недели не зависит от lc_time => set lc_time to 'en_US.utf8'; SET => select to_char(now(), 'TMDay - день недели номер ID'); to_char -------------------------------- Thursday - день недели номер 4 (1 row) => select to_char(now(), 'TMDay - день недели номер D'); to_char -------------------------------- Thursday - день недели номер 5 (1 row) => \q