Какой формат даты и времени - это?

Если вы хотите, чтобы ваш столбец не вставлялся и не обновлялся, вы можете создать столбец insertable=false и updatable=false.

Цитирование из JBoss Hibernate Документы :

вставляемый (необязательно): будет ли столбец частью оператора вставки (по умолчанию true) [119 ]

обновляемый (необязательно): будет ли столбец частью инструкции обновления (по умолчанию true)

blockquote>

Если вы хотите, чтобы PassengerPhoneNo не было вставлено или обновлено в базе данных Таблица, которую вы можете иметь insertable = false и updatable=false, как показано ниже:

@Column(name="PassengerPhoneNo", insertable =  false, updatable = false)
private String PassengerPhoneNo;

6
задан Kevin 23 March 2009 в 15:59
поделиться

5 ответов

Это не целое число, это - число с плавающей точкой на 32 бита. Я еще не вполне разработал формат, это не IEEE.

Править: получил его. Знак на 1 бит, экспонента на 11 битов со смещением 0x3ff и мантисса на 20 битов с подразумеваемым битом налево. В C, принимая положительные числа только:

double offset = pow(2, (i >> 20) - 0x3ff) * (((i & 0xfffff) + 0x100000) / (double) 0x100000);

Это приводит к 0x40000000 = 2.0, таким образом, срок начала работы должен быть 30.12.1899.

Отредактируйте снова: так как Вы были так добры для принятия моего ответа, и Вы кажетесь соответствующими о скорости, я думал, что совершенствую это немного. Вам не нужна дробная часть вещественного числа, таким образом, мы можем преобразовать прямо в целое число с помощью только битовые операции. В Python на этот раз, вместе с результатами испытаний. Я включал некоторые промежуточные значения для лучшей удобочитаемости. В дополнение к ограничению никаких отрицательных чисел эта версия могла бы иметь проблемы, когда экспонента переходит 19, но это должно сохранить Вас хорошими до 3335 года.

>>> def IntFromReal32(i):
        exponent = (i >> 20) - 0x3ff
        mantissa = (i & 0xfffff) + 0x100000
        return mantissa >> (20 - exponent)

>>> testdata = range(0x40000000,0x40240000,0x10000) + range(0x40800000,0x40830000,0x10000) + [1088631936]
>>> from datetime import date,timedelta
>>> for i in testdata:
        print "0x%08x" % i, date(1899,12,30) + timedelta(IntFromReal32(i))


0x40000000 1900-01-01
0x40010000 1900-01-01
0x40020000 1900-01-01
0x40030000 1900-01-01
0x40040000 1900-01-01
0x40050000 1900-01-01
0x40060000 1900-01-01
0x40070000 1900-01-01
0x40080000 1900-01-02
0x40090000 1900-01-02
0x400a0000 1900-01-02
0x400b0000 1900-01-02
0x400c0000 1900-01-02
0x400d0000 1900-01-02
0x400e0000 1900-01-02
0x400f0000 1900-01-02
0x40100000 1900-01-03
0x40110000 1900-01-03
0x40120000 1900-01-03
0x40130000 1900-01-03
0x40140000 1900-01-04
0x40150000 1900-01-04
0x40160000 1900-01-04
0x40170000 1900-01-04
0x40180000 1900-01-05
0x40190000 1900-01-05
0x401a0000 1900-01-05
0x401b0000 1900-01-05
0x401c0000 1900-01-06
0x401d0000 1900-01-06
0x401e0000 1900-01-06
0x401f0000 1900-01-06
0x40200000 1900-01-07
0x40210000 1900-01-07
0x40220000 1900-01-08
0x40230000 1900-01-08
0x40800000 1901-05-26
0x40810000 1901-06-27
0x40820000 1901-07-29
0x40e33480 2007-09-07
7
ответ дан 9 December 2019 в 20:49
поделиться

Я сказал бы, что vmarquez близок.

Вот даты 21.03.2009 и 22.03.2009 как Unix epochtime:

In [8]: time.strftime("%s", (2009, 3, 21, 1, 1, 0, 0,0,0))
Out[8]: '1237590060'

In [9]: time.strftime("%s", (2009, 3, 22, 1, 1, 0, 0,0,0))
Out[9]: '1237676460'

И здесь они находятся в шестнадцатеричном числе:

In [10]: print("%0x %0x" % (1237590060, 1237676460))
49c4202c 49c571ac

При взятии только сначала 5 цифр рост равняется 21. Какой вид соответствий Ваш формат, отрицательный?

1
ответ дан 9 December 2019 в 20:49
поделиться

Вы уверены, что значения соответствуют 07.09.2007?

Я спрашиваю, потому что 1088631936 число секунд, так как Linux (и др.) обнуляет дату: 01.01.1970 0:00:00 к 30.06.2004 21:45:36.

Кажется мне разумным, чтобы думать, что значение является секундами начиная с этой обычной нулевой даты.

Править: Я знаю, что для этого очень возможно не быть корректным ответом. Это - всего один подход (допустимый), но я думаю, что больше информации необходимо (см. комментарии). Редактирование этого (снова) для выявления вопроса в надежде на кого-то еще, чтобы ответить на это или дать идеи. Я: со справедливостью, спортивным и совместно использующим духом :D

3
ответ дан 9 December 2019 в 20:49
поделиться

Некоторый контекст был бы полезен. Если Ваша внешность файла данных что-то, буквально или по крайней мере фигурально, как этот файл, vmarquez находится на деньгах.

http://www.slac.stanford.edu/comp/net/bandwidth-tests/eventanalysis/all_100days_sep04/node1.niit.pk

Та ссылка является данными, произведенными инструментом Available Bandwith Estimation (ABwE) - любопытный объект - то, что это на самом деле содержит те 1 088 631 936 значений, а также контекст. Тот пример


 date     time       abw     xtr   dbcap   avabw   avxtr  avdbcap      rtt    timestamp
06/30/04 14:43:48  1.000   0.000   1.100   1.042   0.003    1.095  384.387   1088631828
06/30/04 14:45:36  1.100   0.000   1.100   1.051   0.003    1.096  376.408   1088631936
06/30/04 14:47:23  1.000   0.000   1.100   1.043   0.003    1.097  375.196   1088632043
кажется, имеет семичасовое смещение от предложенной временной стоимости 21:45:36. (Вероятно, локальный Стэнфорд, работая на Летнем времени.)
1
ответ дан 9 December 2019 в 20:49
поделиться

Ну, Вы только показали нам, как Ваша программа использует 2 из этих 8 цифр, таким образом, мы должны будем предположить, что другие 6 проигнорированы (потому что Ваша программа могла делать что-либо, что она хочет с теми другими цифрами).

Так, мы могли сказать, что формат ввода: 40mn0000, где m и n являются двумя шестнадцатеричными цифрами.

Затем вывод: 01.01.1900 + пол ((2^ (m+1)-2) + n*2^ (m-3)) дни

Объяснение:

  1. В каждом примере заметьте что, увеличив увеличения n на 1 количество дней 2^ (m-3).
  2. Заметьте, что каждый раз n проходит от F до 0, m увеличен.

Используя эти два правила, и играющий вокруг с числами, Вы получаете уравнение выше. (За исключением пола, который был добавлен, потому что вывод не отображает дробные дни).

Я предполагаю, что Вы могли переписать это путем замены двух отдельных шестнадцатеричных переменных m и n с единственным 2-разрядным шестнадцатеричным числом H. Однако я думаю, что это сделало бы уравнение намного более ужасным.

0
ответ дан 9 December 2019 в 20:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: