
targitaj
17.07.2017
10:40:41
Но экземпляр в системе установлен один

Mike Chuguniy
17.07.2017
10:42:40

targitaj
17.07.2017
10:46:15

Fike
17.07.2017
10:48:19

Google

Anton
17.07.2017
10:51:24
В этом даже смысла нет в 99% случаев
ибо 100% утилизации соединений не будет
pgbouncer самое адекватное если не требуется логики в middleware

Leonid
17.07.2017
11:00:31
люди, а как-то можно из поля time получить timestamp?
на стороне сервера

Артур
17.07.2017
11:11:05

Leonid
17.07.2017
11:11:17
мне бы на sql

Артур
17.07.2017
11:11:18
sql, python, c++, php

Leonid
17.07.2017
11:11:55
т.е. у меня есть поле типа time, а я хочу что=то вроде select '09:00:00'::timestamp'

Артур
17.07.2017
11:12:01
формат исходного поля дай и конечного
точнее сюда напиши как должно выглядеть

Google

Leonid
17.07.2017
11:12:52
не, так я тоже могу. мне чтобы без оберток
сделать функцию, которая возьмет поле как строку и потом распарсит - это не вопрос
я просто предполжил, что есть штатный способ

Артур
17.07.2017
11:14:04
Юзал что-то типа того: `to_timestamp(_datetime, 'YYYY-MM-DD HH24:MI:SS');`
Сейчас погляжу, сработает ли это ? Она у меня в хранимке лежит :)
https://www.postgresql.org/docs/9.6/static/functions-datetime.html
Вот здесь вроде описаны варианты

Leonid
17.07.2017
11:19:32
спасибо!! буду копать

Артур
17.07.2017
11:20:50
чё копать то?

Anatoliy
17.07.2017
11:22:18
SELECT (CURRENT_DATE || ' ' || CURRENT_TIME)::timestamp;
Можно так

Артур
17.07.2017
11:23:50

Anatoliy
17.07.2017
11:24:10
Ну строка нормально закастится)

Kirill
17.07.2017
11:24:40
И неизвестно какой часовой пояс. Недавно открыл для себя что timestamptz::date не иммутабельна

Anatoliy
17.07.2017
11:25:26
можно делать at timezone (если мне память не изменяет)

Артур
17.07.2017
11:25:46
Ну я так текущее время в секундах и храню ?
(date_part('epoch'::text, now()) * (1000)::double precision)
наверное это плохо :)

Anatoliy
17.07.2017
11:26:08
это ужасно

Старый
17.07.2017
11:27:47

Google

Артур
17.07.2017
11:28:00
просто когда-то, когда на mysql сидел, datetime толи по моему непониманию, то ли по причине ошибки в генах, то ли просто потому что это MySQL - даже если отправлять по GMT всеравно смещение времени происходит на разных серверах и вот тогда я как-то привык именно так фиксировать дату
хотя, когда не критично храню в timestamp
но такое редко. Зачастую критично, чтобы дата была верной.

Leonid
17.07.2017
11:31:35
в итоге пришлось таки возвращать в ::text и конвертить, потому как тут у меня свой типа NullTime (это в Go). К счастью, это справочник, так что нагрузит не слишком, я надеюсь.

Артур
17.07.2017
11:33:18
@Bereznyak просвяти пожалуйста меня. Как на 100% гарантировать timestamp в gmt чтобы не было риска записать криво?
мне это важно

Anatoliy
17.07.2017
11:34:25
=> SELECT NOW() AT TIME ZONE 'gmt';
timezone
----------------------------
2017-07-17 11:34:07.001962
(1 row)

Darafei
17.07.2017
11:34:28
Z в конце + парсить как timestamptz

Артур
17.07.2017
11:34:57
нет, сорри, не отвечай, сначала доку перечитаю

Darafei
17.07.2017
11:36:06
Z - это iso8601 указатель на UTC
парсер timestamptz парсит таймзоны, учитывая Z

Darafei
17.07.2017
11:37:08
gis=# select '2017-07-17 11:34:07Z'::timestamptz;
timestamptz
------------------------
2017-07-17 14:34:07+03
(1 row)

عاصم بن حارث
17.07.2017
11:37:43
?

Артур
17.07.2017
11:38:16
Я понимаю что вопрос звучит глупо, но это не так :)

Darafei
17.07.2017
11:38:35
да, ведь ты явно протаскиваешь таймзону
опасность таит timestamp:
gis=# select '2017-07-17 11:34:07Z'::timestamp;
timestamp
---------------------
2017-07-17 11:34:07
(1 row)

Anatoliy
17.07.2017
11:40:13
Ну он по идее сконвертит в локаль базы

Darafei
17.07.2017
11:41:20
ну, там на комбинациях начинаются интересные эффекты:
gis=# select ('2017-07-17 11:34:07Z'::timestamptz)::timestamp;
timestamp
---------------------
2017-07-17 14:34:07
(1 row)

Google

Darafei
17.07.2017
11:41:55
отсюда растут рекомендации никогда не использовать timestamp, а всегда timestamptz :)

Артур
17.07.2017
11:42:27
вот только же решил все make_date и update_date переконвертить в timestamptz
А теперь вот даже в растерянности.

Lev
17.07.2017
11:43:46
если очень страшно за настройки базы, то можно в запросах явно спрашивать
select ('2017-07-17 11:34:07Z'::timestamptz) at time zone 'utc';
timezone
---------------------
2017-07-17 11:34:07
(1 row)

Артур
17.07.2017
11:45:14
тогда вот еще вопрос чем int хуже timestamp?
нечитаебелен типа?

Darafei
17.07.2017
11:46:21
зависит, как ты пользуешься базой

Anatoliy
17.07.2017
11:46:22
ну во-первых, он нечитабелен человеком)
Во-вторых, его всегда надо кастить

Darafei
17.07.2017
11:47:32
если ты пользуешься базой не как объектно-реляционной системой управления базой данных, а как тупым хранилищем, то храни байты как тебе удобнее

Admin
ERROR: S client not available

Anatoliy
17.07.2017
11:47:48
Плюс когда-нибудь подвинут часы

Артур
17.07.2017
11:48:02
сейчас вопросы полезут как пирожки!
а какая связь реляционной базы с timestamp?
это же просто тип данных

Darafei
17.07.2017
11:49:17
тебе важна семантика на селектах? :)

Артур
17.07.2017
11:49:25
ясно

Dmitry
17.07.2017
11:49:33

Anatoliy
17.07.2017
11:49:42
unixtime

Darafei
17.07.2017
11:50:07
а вообще спор давний
вот в постгисе в третью-четвёртую координату складывают время иногда

Google

Darafei
17.07.2017
11:50:49
и у него нет никакого особенного понятия, что это время, и там просто число в юникстайме

Dmitry
17.07.2017
11:50:59
Пространственно-временной континуум? ))

Lev
17.07.2017
11:51:12
ато

Артур
17.07.2017
11:52:20
а вообще спор давний
мне это нужно для понимания, не ради спора.
потому что если структуру выложу в паблик это знание будут поглощать совсем начинающие (в интернете же гуглом пользуются?) и то как они запомнят, так и дальше пойдет

Lev
17.07.2017
11:52:28
там даже половина функций умеет это время не замечать при рассчёте геометрического пересечения.

Fike
17.07.2017
11:53:12

Lev
17.07.2017
11:53:20

Артур
17.07.2017
11:55:37
правильно дефолт для поля make_time пишу?
(NOW() AT TIME ZONE 'gmt' || 'Z')::TIMESTAMPTZ

Andrey
17.07.2017
11:55:50

Darafei
17.07.2017
11:56:30

Артур
17.07.2017
11:56:55

Darafei
17.07.2017
11:57:25
часовой пояс приклеивается при выводе из timestamptz

Lev
17.07.2017
11:57:37

Andrey
17.07.2017
11:59:42
Я имел в виду, что timestamp занимает 8 байт, а дата и время в виде текста как минимум 19.

Anatoliy
17.07.2017
12:00:10
Это экономия на спичках

Lev
17.07.2017
12:00:36
А бинарный тип не обязан хранить текст. Там может лежать такая же структура.

Andrey
17.07.2017
12:01:01
Ну ничего себе "спички". В 2.5 раза больше.

Айтуар
17.07.2017
12:01:13

Anatoliy
17.07.2017
12:01:40

Артур
17.07.2017
12:01:53

Anatoliy
17.07.2017
12:02:07
бреве отдельное место занимает (не всегда)

Andrey
17.07.2017
12:02:08