
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            
-------------------------------
 Суббота - день недели номер 6
(1 row)


В противном случае используем D

=> select to_char(now(), 'TMDay - день недели номер D');
            to_char            
-------------------------------
 Суббота - день недели номер 7
(1 row)


Отметим, что получение номера дня недели не зависит от lc_time

=> set lc_time to 'en_US.utf8';
SET

=> select to_char(now(), 'TMDay - день недели номер ID');
            to_char             
--------------------------------
 Saturday - день недели номер 6
(1 row)


=> select to_char(now(), 'TMDay - день недели номер D');
            to_char             
--------------------------------
 Saturday - день недели номер 7
(1 row)


=> \q
