Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / db2+timestamp / 17 сообщений из 17, страница 1 из 1
16.08.2007, 07:33
    #34731116
Pilat_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
db2+timestamp
Установленна db2 8.1.
Имеется таблица с полем типа TIMESTAMP.
Представление идет в формате даты, каким образом перегнать это значение в формат милисекунд?
...
Рейтинг: 0 / 0
16.08.2007, 13:54
    #34732361
RomanSavelyev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
db2+timestamp
Код:
select MICROSECOND(timestampfield) from tablename
...
Рейтинг: 0 / 0
16.08.2007, 13:55
    #34732366
RomanSavelyev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
db2+timestamp
Код: plaintext
select MICROSECOND(timestampfield) from tablename
...
Рейтинг: 0 / 0
16.08.2007, 14:16
    #34732446
Pilat_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
db2+timestamp
Наверно, я не правильно изъянился. Мне необходимо получить время в формате unix из имеющего штампа дб2.
...
Рейтинг: 0 / 0
16.08.2007, 15:06
    #34732679
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
db2+timestamp
Pilat_Наверно, я не правильно изъянился. Мне необходимо получить время в формате unix из имеющего штампа дб2.Пусть
Код: plaintext
VALUES CURRENT TIMESTAMP
выдает значение
2007-08-16-15.04.22.687000
В каком именно формате вы хотите представить этот timestamp?
...
Рейтинг: 0 / 0
16.08.2007, 15:14
    #34732715
RomanSavelyev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
db2+timestamp
Pilat_Наверно, я не правильно изъянился. Мне необходимо получить время в формате unix из имеющего штампа дб2.
Может кто и помнит ещё, что такое "время юникс" :)
Я - уже нет.

Огласите, к какому именно формату вам надо преобразовать timestamp.
...
Рейтинг: 0 / 0
16.08.2007, 17:42
    #34733317
Alexey Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
db2+timestamp
Это?
Код: plaintext
VALUES(TIMESTAMPDIFF( 2 , CHAR(CURRENT TIMESTAMP - TIMESTAMP('1970-01-01-00.00.00.00'))))
...
Рейтинг: 0 / 0
16.08.2007, 17:48
    #34733339
авыпаыа
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
db2+timestamp
время в юникс это сколко секунд прошло с начала 1970-го года
...
Рейтинг: 0 / 0
17.08.2007, 15:55
    #34735189
Pilat_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
db2+timestamp
2Alexey Popov
Вы абсолютно правы, это я и искал.

2авыпаыа
Поправка - "миллисекунд".
...
Рейтинг: 0 / 0
17.08.2007, 16:06
    #34735234
Pilat_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
db2+timestamp
Однако, либо я уже совсем плохой стал, либо....
Выборка из таблицы
Код: plaintext
1.
values(TIMESTAMPDIFF( 2 ,CHAR(CURRENT TIMESTAMP - TIMESTAMP('1970-01-01-00.00.00.00'))),CURRENT TIMESTAMP)
Результат выборки (1-й ст - время в секундах, 2-й - штамп дб2)
Код: plaintext
1.
2.
3.
 1                                 2                          
-----------       --------------------------
  1186423465        2007 - 08 - 17 - 18 . 04 . 25 . 742000 

Далее помещаю значение первого столбца в жава код
Код: plaintext
1.
new Date(1186423465000L) = Mon Aug  06   18 : 04 : 25  GMT  2007 

Внимание вопрос. Почему появляется разница в днях?
...
Рейтинг: 0 / 0
20.08.2007, 09:28
    #34737511
GolemXIV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
db2+timestamp
Из-за совершенно нетривиального поведения TIMESTAMPDIFF.
В полном году 365 дней, а в полном месяце 30.
9 дней в високосных годах, + 2 за этот год (31+31+31+31-28).
...
Рейтинг: 0 / 0
20.08.2007, 10:50
    #34737735
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
db2+timestamp
Pilat_Установленна db2 8.1.
Имеется таблица с полем типа TIMESTAMP.
Представление идет в формате даты, каким образом перегнать это значение в формат милисекунд?Можно написать маленькую функцию на java:

1. Скомпилируйте ява-файл:
--- Misc.java ---
public class Misc {
public static long timestamp2long(java.sql.Timestamp ts) {return ts.getTime();}
}
--- Misc.java end ---

батником вида (путь к sqllib поставьте свой):

--- make.bat ---
set DB2PATH="C:\PROGRAM FILES\IBM\SQLLIB"
set JDK_PATH=%DB2PATH%\java\jdk
set LIBS=%DB2PATH%\java
%JDK_PATH%\bin\javac -extdirs %LIBS% %1
--- make.bat end ---

т.е. выполните:
make.bat Misc.java

2. Поместите Misc.class в каталог %DB2PATH%\Function на сервере.

3. Зарегистрируйте функцию:
---
create function timestamp2bigint(ts timestamp)
RETURNS bigint
LANGUAGE Java
EXTERNAL NAME 'Misc.timestamp2long'
FENCED THREADSAFE
NO SQL
NOT NULL CALL
NO EXTERNAL ACTION
DISALLOW PARALLEL
PARAMETER STYLE java;
---

4. Вызовите ее:
values timestamp2bigint(timestamp('2007-08-17-18.04.25.742000'))
...
Рейтинг: 0 / 0
01.10.2007, 10:39
    #34837648
Pilat_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
db2+timestamp
1. Создал и скомпилил жава файл Timestamp4DB2.java
Код: plaintext
1.
2.
3.
4.
5.
public class Timestamp4DB2 {
	public static long timestamp2long(java.sql.Timestamp ts) {
		return ts.getTime();
	}
}
Компиляция
Код: plaintext
1.
javac Timestamp4DB2.java

2. Скопировал Timestamp4DB2.class в C:\Program Files\IBM\SQLLIB\FUNCTION\

3. Зарегил функцию
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create function timestamp2bigint(ts timestamp)
RETURNS bigint
LANGUAGE Java
EXTERNAL NAME 'Timestamp4DB2.timestamp2long'
FENCED THREADSAFE
NO SQL
NOT NULL CALL
NO EXTERNAL ACTION
DISALLOW PARALLEL
PARAMETER STYLE java;

4. Выполнил функцию
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
values timestamp2bigint(timestamp('2007-08-17-18.04.25.742000'))

 1                    
--------------------
SQL4304N  Хранимая процедура или определенная пользователем функция Java 
"PILAT.TIMESTAMP2BIGINT", уникальное имя "SQL071001110113400" не могут 
загрузить класс Java "Timestamp4DB2", код причины "1".  SQLSTATE= 42724 

SQL4304N  Хранимая процедура или определенная пользователем функция Java "PILAT.TIMESTAMP2BIGINT", уникальное имя "SQL071001110113400" не могут загрузить класс Java "Timestamp4DB2", код причины "1             ".
...
Рейтинг: 0 / 0
02.10.2007, 00:11
    #34839642
mustaccio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
db2+timestamp
Код:
1.
values((DAYS(CURRENT TIMESTAMP) - DAYS('1970-01-01')) * 86400 + (MIDNIGHT_SECONDS(CURRENT TIMESTAMP - CURRENT TIMEZONE)))
...
Рейтинг: 0 / 0
04.10.2007, 07:37
    #34845458
dmatsynin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
db2+timestamp
Пилат, как то странно, у тебя в коде timestamp2long, а из db2 ты вызываешь timestamp2bigint?
...
Рейтинг: 0 / 0
04.10.2007, 16:06
    #34847256
dmatsynin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
db2+timestamp
2Пилат, согласен, затупил :)
В общем у меня все работает, функцию скомпилил и все работает.
А у меня такой вопрос, от IBM'a есть такая штука - DeveloperWorkbench. Собственно она служит для создания хранимок и прочего. А вот почему там нельзя создать функцию на жаве? Вот хранимку можно, а функцию нельзя? Пришлось ручками делать.
...
Рейтинг: 0 / 0
11.10.2007, 21:37
    #34864472
mustaccio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
db2+timestamp
mustaccio
Код: plaintext
values((DAYS(CURRENT TIMESTAMP) - DAYS('1970-01-01')) *  86400  + (MIDNIGHT_SECONDS(CURRENT TIMESTAMP - CURRENT TIMEZONE)))


Ошибочка вышла, кстати. Должно быть
Код: plaintext
values((DAYS(CURRENT TIMESTAMP - CURRENT TIMEZONE) - DAYS('1970-01-01')) *  86400  + (MIDNIGHT_SECONDS(CURRENT TIMESTAMP - CURRENT TIMEZONE)))
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / db2+timestamp / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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