Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Формат даты / 25 сообщений из 41, страница 1 из 2
28.07.2014, 11:45:30
    #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
28.07.2014, 12:04:34
    #38707128
rovan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат даты
des1roer,

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

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

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

с целью проверить, какого типа у тебя поле с временем. Я предположил, что текстовое, т.к. в противном случае проблемы нет.
Как оказалось, он у тебя и так таймстамп.
Его не нужно преобразовывать, extract с таймстампом работает.
Код: plsql
1.
select extract(epoch from current_timestamp)
...
Рейтинг: 0 / 0
28.07.2014, 13:02:03
    #38707209
des1roer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат даты
дак формат не постгресовский, а русский. в таком виде он не работает
...
Рейтинг: 0 / 0
28.07.2014, 13:03:26
    #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
28.07.2014, 13:06:42
    #38707212
rovan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат даты
des1roer,

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

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

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

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

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

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

--Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
28.07.2014, 13:22:20
    #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
28.07.2014, 13:28:37
    #38707232
des1roer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат даты
Код: sql
1.
SELECT EXTRACT(EPOCH FROM  "F_Date"), 


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


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

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

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

--Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
28.07.2014, 13:30:21
    #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
28.07.2014, 13:30:28
    #38707236
rovan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат даты
des1roerдак не работало пока я дэйтстайл не поменял.
Верни дэйтстайл как был, и выполни запрос повторно.
Удивление ждёт тебя.
...
Рейтинг: 0 / 0
28.07.2014, 13:35:06
    #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
28.07.2014, 13:39:11
    #38707247
des1roer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат даты
ну если я получаю на
Код: sql
1.
  show datestyle;


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

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

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


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