Здравствуйте, 4erniyPlasch, Вы писали:
P>СУБД MSSQL.
P>Считал значение timstamp — получил массив из 8 байт. Что мне с ним делать? Будет нормально если я его к int или строке приведу приведу или нет?
На стороне сервера я делаю одно из преобразований: cast(TS as datetime),cast(TS as int)
Здравствуйте, 4erniyPlasch, Вы писали:
P>СУБД MSSQL.
P>Считал значение timstamp — получил массив из 8 байт. Что мне с ним делать? Будет нормально если я его к int или строке приведу приведу или нет?
Для timestamp-а никаких операций кроме сравнения с другим timestamp-ом делть не надо, так что не совсем понятно зачем тебе приводить его к чему-то?
Здравствуйте, Lloyd, Вы писали: L>Для timestamp-а никаких операций кроме сравнения с другим timestamp-ом делть не надо, так что не совсем понятно зачем тебе приводить его к чему-то?
Дык, чтобы сравнить. Мне его надо куда-то считать, потом считанное уже сравнивать. Считывать мне удобнее в int, чтобы проблем с форматом даты не иметь...
Здравствуйте, 4erniyPlasch, Вы писали:
P>Дык, чтобы сравнить. Мне его надо куда-то считать, потом считанное уже сравнивать. Считывать мне удобнее в int, чтобы проблем с форматом даты не иметь...
Ну так и сравнивай 8 байт. Честно говоря я даже не представляю как ты собираешься 8 байт в int запихнуть. А о том, что timestamp имеет отношение к дате лучше вообще забыть.
Здравствуйте, Lloyd, Вы писали: L>Ну так и сравнивай 8 байт. Честно говоря я даже не представляю как ты собираешься 8 байт в int запихнуть. А о том, что timestamp имеет отношение к дате лучше вообще забыть.
В int запихивается моментально — на стороне сервера convert(int,myfield). В datetime тоже самое.
Вас смущает, что там 8 байт, а не 4? Так int тоже разный бывает...
Здравствуйте, 4erniyPlasch, Вы писали:
P>СУБД MSSQL.
P>Считал значение timstamp — получил массив из 8 байт. Что мне с ним делать? Будет нормально если я его к int или строке приведу приведу или нет?
timestamp — binary(8) никакого отношения к дате и времени не имеет. Правильнее будет использовать синоним rowversion. Его вообще не надо преобразовывать, т.к. есть смысл сравнивать его только с binary(8), т.е. с другим сохраненным значением timestamp или результатом ф-ции @@dbts
Здравствуйте, Lloyd, Вы писали:
L>Не знаю как у тебя, а у меня int имеет вполне конкретный размер (4 байта).
А это смотря какая версия сервака стоит на машине (64bit или 32bit)
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Аноним, Вы писали:
А>>А это смотря какая версия сервака стоит на машине (64bit или 32bit) L>идите в BOL.
Здравствуйте, _d_m_, Вы писали:
___>Здравствуйте, 4erniyPlasch, Вы писали:
___>timestamp — binary(8) никакого отношения к дате и времени не имеет. Правильнее будет использовать синоним rowversion. Его вообще не надо преобразовывать, т.к. есть смысл сравнивать его только с binary(8), т.е. с другим сохраненным значением timestamp или результатом ф-ции @@dbts
Это не совсем правда, timespam это безнаковое 64 битное целое, чем больше это число тем позже был получин timespam. Из операций часто полезно использовать min, max, >, <, =.
Здравствуйте, Lloyd, Вы писали: L>Ну так и сравнивай 8 байт. Честно говоря я даже не представляю как ты собираешься 8 байт в int запихнуть. А о том, что timestamp имеет отношение к дате лучше вообще забыть.
Приведу цитату одного мудреца из др. форума:
"Это своего рода DB-wide identity — последовательно увеличивающиеся значения в диапазоне bigint. К дате/времени отношения никакого не имеет, если конечно речь идет о типе timestamp в понимании MSSQL 2000, а не SQL-92. Вообще же, более корректно было бы называть его rowversion, дабы избежать путаницы."
Здравствуйте, 4erniyPlasch, Вы писали:
L>>Не знаю как у тебя, а у меня int имеет вполне конкретный размер (4 байта).
P>Да у меня тоже — просто 2^4 это гораздо больше чем мне надо, так что до 2^8 дело не дойдет...
Что такое 2^4? 8 байт — это 2^(8*8).
Здравствуйте, kon_v_palto, Вы писали:
__>Здравствуйте, _d_m_, Вы писали:
___>>Здравствуйте, 4erniyPlasch, Вы писали:
___>>timestamp — binary(8) никакого отношения к дате и времени не имеет. Правильнее будет использовать синоним rowversion. Его вообще не надо преобразовывать, т.к. есть смысл сравнивать его только с binary(8), т.е. с другим сохраненным значением timestamp или результатом ф-ции @@dbts
__>Это не совсем правда, timespam это безнаковое 64 битное целое, чем больше это число тем позже был получин timespam. Из операций часто полезно использовать min, max, >, <, =.
Эээ... Так где я сказал "не совсем правду"? rowversion представлен типом binary(8) (ссылкой тыкать?), что в принципе и представляет из себя 64 битное беззнаковое целое.
Здравствуйте, _d_m_, Вы писали:
___>Здравствуйте, kon_v_palto, Вы писали:
___>Эээ... Так где я сказал "не совсем правду"? rowversion представлен типом binary(8) (ссылкой тыкать?), что в принципе и представляет из себя 64 битное беззнаковое целое.
___>"timestamp — binary(8) никакого отношения к дате и времени не имеет."
чем больше это число тем позже был получин timespam ___>"Его вообще не надо преобразовывать, т.к. есть смысл сравнивать его только с binary(8)"
А операции больше меньше для binary есть, и в клиенте с Byte[] работать очень удобно.
___>Кстати, полезно для чего? Для здоровья?
Ну например для выборки обновлений из базы вроде
SELECT * FROM "Table" WHERE "ts" > @max_ts
где "ts" столбец timestamp, @max_ts максимальное значение "ts" данных сохраненных на клиенте. Конечно проблема с удаленными строками, ну думаю сам догадаешся как ее разрешить.
Здравствуйте, 4erniyPlasch, Вы писали:
L>>Ну так и сравнивай 8 байт. Честно говоря я даже не представляю как ты собираешься 8 байт в int запихнуть. А о том, что timestamp имеет отношение к дате лучше вообще забыть.
P>Приведу цитату одного мудреца из др. форума:
P>
P>"Это своего рода DB-wide identity — последовательно увеличивающиеся значения в диапазоне bigint. К дате/времени отношения никакого не имеет, если конечно речь идет о типе timestamp в понимании MSSQL 2000, а не SQL-92. Вообще же, более корректно было бы называть его rowversion, дабы избежать путаницы." P>
Ты к чему это привел?
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, 4erniyPlasch, Вы писали:
L>>>Не знаю как у тебя, а у меня int имеет вполне конкретный размер (4 байта).
P>>Да у меня тоже — просто 2^4 это гораздо больше чем мне надо, так что до 2^8 дело не дойдет... L>Что такое 2^4? 8 байт — это 2^(8*8).