powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Формат даты
25 сообщений из 41, страница 1 из 2
Формат даты
    #38707111
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть таблица с датами. формат в таблице такой
22.04.2014 12:25:07
хочу получить через запрос юникс время. соотвественно косяк -
Код: sql
1.
SELECT EXTRACT(EPOCH FROM TIMESTAMP'2000-12-16 12:21:13');


то бишь нужно привести к виду 2000-12-16 12:21:13. если делать так
Код: sql
1.
to_char( "F_Date", 'YYYY-MM-DD HH24:MI:SS' )


то постгрес не поймет
Код: sql
1.
SELECT EXTRACT(EPOCH FROM TIMESTAMP(to_char( "F_Date", 'YYYY-MM-DD HH24:MI:SS' )))


как решить ?
...
Рейтинг: 0 / 0
Формат даты
    #38707128
rovan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
des1roer,

DDL таблицы с датами покажи.
...
Рейтинг: 0 / 0
Формат даты
    #38707168
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
c какой целью?
...
Рейтинг: 0 / 0
Формат даты
    #38707169
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"F_Date" TIMESTAMP(0) WITHOUT TIME ZONE,
...
Рейтинг: 0 / 0
Формат даты
    #38707178
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roer"F_Date" TIMESTAMP(0) WITHOUT TIME ZONE,

эээ у вас в чем проблема то?
extract нормально без плясок с timestamp полями работает.

--Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
Формат даты
    #38707189
rovan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
des1roer,

с целью проверить, какого типа у тебя поле с временем. Я предположил, что текстовое, т.к. в противном случае проблемы нет.
Как оказалось, он у тебя и так таймстамп.
Его не нужно преобразовывать, extract с таймстампом работает.
Код: plsql
1.
select extract(epoch from current_timestamp)
...
Рейтинг: 0 / 0
Формат даты
    #38707209
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дак формат не постгресовский, а русский. в таком виде он не работает
...
Рейтинг: 0 / 0
Формат даты
    #38707210
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
собсна косяк
Код: sql
1.
SELECT EXTRACT(EPOCH FROM TIMESTAMP'22.04.2014 12:23:37'); 


ERROR: date/time field value out of range: "22.04.2014 12:23:37"
LINE 1: SELECT EXTRACT(EPOCH FROM TIMESTAMP'22.04.2014 12:23:37');
^
HINT: Perhaps you need a different "datestyle" setting.
...
Рейтинг: 0 / 0
Формат даты
    #38707212
rovan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
des1roer,

что ты делаешь, человек? Зачем ты это делаешь?
Тебе нужно поле из таблицы преобразовать, или что?
Почему в запросе прописан текстовый литерал?
...
Рейтинг: 0 / 0
Формат даты
    #38707214
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а собсна
Код: sql
1.
SET DATESTYLE TO GERMAN

и исправил ситуацию. правда непонятно, где мне это еще аукнется...
...
Рейтинг: 0 / 0
Формат даты
    #38707215
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в общем проблема решена
...
Рейтинг: 0 / 0
Формат даты
    #38707218
rovan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
des1roer,

ты решил проблему неправильно, и аукнется она тебе многократно на этапах загрузки данных при неявном преобразовании дат.
Ответь на мои вопросы, и тебе помогут решить задачу правильно.
...
Рейтинг: 0 / 0
Формат даты
    #38707220
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что ты делаешь, человек? Зачем ты это делаешь?
Тебе нужно поле из таблицы преобразовать, или что?
Почему в запросе прописан текстовый литерал?

необходимо выдрать из базы время в юниксформате.
время там - германское(считай русское человекопонятное)
для функции экстракт нужно представление времени по-пиндостански
как с этим бороцца не изменив дэйтстайл?
почему экстракт не работает с ту_чар?
...
Рейтинг: 0 / 0
Формат даты
    #38707223
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roerчто ты делаешь, человек? Зачем ты это делаешь?
Тебе нужно поле из таблицы преобразовать, или что?
Почему в запросе прописан текстовый литерал?

необходимо выдрать из базы время в юниксформате.
время там - германское(считай русское человекопонятное)
для функции экстракт нужно представление времени по-пиндостански
как с этим бороцца не изменив дэйтстайл?
почему экстракт не работает с ту_чар?

потому что extract работает напрямую с timestamp полями (и на dafestyle ему безразлично).
вам просто надо использовать SELECT EXTRACT(EPOCH FROM "F_Date")
не пытаясь запутать базу лишний раз добалением разнообразных to_char.

--Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
Формат даты
    #38707228
rovan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
des1roer,

Время нужно выдрать из таблицы или просто из базы?
Для твоей задачи запрос будет выглядеть так:
Код: plsql
1.
SELECT EXTRACT(EPOCH FROM "F_Date") from <<имя_таблицы_с_полем_F_DATE>>


ТСдля функции экстракт нужно представление времени по-пиндостански
Неправда. Для функции extract нужен таймстамп или интервал. Ты в запросе прописываешь строковый литерал, и пытаешься его преобразовать, используя настройки базы. Он валится на преобразовании даты, а не на исполнении функции EXTRACT.
ТСкак с этим бороцца не изменив дэйтстайл?
Если уж тебе приспичило пользоваться литералом (хотя я не понимаю, как это относится к твоей задаче), то делается это так:
Код: plsql
1.
2.
select to_timestamp('2000-12-16 12:21:13', 'YYYY-MM-DD HH24:MI:SS');
SELECT EXTRACT(EPOCH FROM to_timestamp('2000-12-16 12:21:13', 'YYYY-MM-DD HH24:MI:SS'));


TCпочему экстракт не работает с ту_чар?
Потому что не должен. to_char возвращает текст. Экстракт работает с таймстампом или интервалом.

Резюме - подтяни теорию. Почитай документацию.
...
Рейтинг: 0 / 0
Формат даты
    #38707232
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
SELECT EXTRACT(EPOCH FROM  "F_Date"), 


дак не работало пока я дэйтстайл не поменял.
а про подтяни теорию - сам в базах буквально недавно. что то сложнее селект * фром дб писать не было нужды до поры до времени
...
Рейтинг: 0 / 0
Формат даты
    #38707234
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roer
Код: sql
1.
SELECT EXTRACT(EPOCH FROM  "F_Date"), 


дак не работало пока я дэйтстайл не поменял.
а про подтяни теорию - сам в базах буквально недавно. что то сложнее селект * фром дб писать не было нужды до поры до времени

так а можно всетаки весь полный запрос и ошибку тогда?
если "не работало пока я дэйтстайл не поменял"

именно при таком синтаксисе как вы выше написали.

--Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
Формат даты
    #38707235
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зато уже накидал функцию разницы времени
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
CREATE OR REPLACE FUNCTION test_function2()
RETURNS integer
AS $$
DECLARE
unixtime integer;
unixtime2 integer;
BEGIN
SELECT * FROM(
SELECT EXTRACT(EPOCH FROM  "F_Date"), 
  "ID_TagData"
INTO unixtime FROM 
  "SC_Tag"."T_TagData" 
  where "F_TagName_ID" = 1   order by "ID_TagData" desc limit 2)
  as foo order by "ID_TagData" asc limit 1;  
  SELECT EXTRACT(EPOCH FROM  "F_Date"), 
  "ID_TagData"
INTO unixtime2 FROM 
  "SC_Tag"."T_TagData" 
  where "F_TagName_ID" = 1   order by "ID_TagData" desc limit 2;
  unixtime2 = unixtime2 - unixtime;
RETURN (unixtime2);
END;
$$
LANGUAGE 'plpgsql';
...
Рейтинг: 0 / 0
Формат даты
    #38707236
rovan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
des1roerдак не работало пока я дэйтстайл не поменял.
Верни дэйтстайл как был, и выполни запрос повторно.
Удивление ждёт тебя.
...
Рейтинг: 0 / 0
Формат даты
    #38707240
rovan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
des1roerзато уже накидал функцию разницы времени
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
CREATE OR REPLACE FUNCTION test_function2()
RETURNS integer
AS $$
DECLARE
unixtime integer;
unixtime2 integer;
BEGIN
SELECT * FROM(
SELECT EXTRACT(EPOCH FROM  "F_Date"), 
  "ID_TagData"
INTO unixtime FROM 
  "SC_Tag"."T_TagData" 
  where "F_TagName_ID" = 1   order by "ID_TagData" desc limit 2)
  as foo order by "ID_TagData" asc limit 1;  
  SELECT EXTRACT(EPOCH FROM  "F_Date"), 
  "ID_TagData"
INTO unixtime2 FROM 
  "SC_Tag"."T_TagData" 
  where "F_TagName_ID" = 1   order by "ID_TagData" desc limit 2;
  unixtime2 = unixtime2 - unixtime;
RETURN (unixtime2);
END;
$$
LANGUAGE 'plpgsql';



Мда.

В общем, дружище, правильные пути тебе уже указали.
Дальше уже сам выбирай, идти по ним, или писать вот такое, как у тебя написано.
...
Рейтинг: 0 / 0
Формат даты
    #38707247
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну если я получаю на
Код: sql
1.
  show datestyle;


ISO, MDY
значит он не поменял и где-то у меня косяк был?
...
Рейтинг: 0 / 0
Формат даты
    #38707252
rovan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
des1roer,

воскуряй до просветления.
...
Рейтинг: 0 / 0
Формат даты
    #38707255
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
многабукафф ниасилил
...
Рейтинг: 0 / 0
Формат даты
    #38707275
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
товарищи знатоки, а вот если мне нужно обратное совершить? то есть юниксстиль в человекопонятный '22.04.2014 12:26:07'
...
Рейтинг: 0 / 0
Формат даты
    #38707280
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roerтоварищи знатоки, а вот если мне нужно обратное совершить? то есть юниксстиль в человекопонятный '22.04.2014 12:26:07'
сначала уяснить для себя окончательно, что единственный trueЪ формат даты есть yyyy-mm-dd ..... -- хотя бы в силу правил сортировки строк, ога.

а потом перестать докапываться до ОЛЛ с деццкими задачками, а научиться включать моск, и читалку (в случае его, моска, отсутсвия - особо).
...
Рейтинг: 0 / 0
25 сообщений из 41, страница 1 из 2
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Формат даты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]