Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Работа со временем и возникшие при этом проблемы. / 3 сообщений из 3, страница 1 из 1
07.05.2002, 22:55
    #32029687
Евгений
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа со временем и возникшие при этом проблемы.
Привет всем! Я с SQL Server работаю недавно, по этому может быть эта проблема кому то покажется смешной, но из-за этого встала работа, и очень хотелось бы получить ответ (приамбула )
Есть таблица, в которую заноситься время работы механизма. Специфика задачи токова что в сутках может быть 23 или 24 или 25 часов. Так вот , то что до 23 часов проблем нет. 24 часа переводит в дату 31.12.1899 , ну а 25 часов вообще не вводит из-за ошибки. Стоит SQL Server 2000, поле datatime. Так вот собственно вопрос, это как-то лечится или всё надо хранить в другом формате. Может кто-нибудь сталкивался с таким. Дело в том, что в дальнейшем нужно выдавать сумму часов соответсвенно другие форматы надо как-то конвертить , или может я неправ ?
Очень хочется получить ответ
...
Рейтинг: 0 / 0
08.05.2002, 00:57
    #32029688
Sergey Vinogradov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа со временем и возникшие при этом проблемы.
DateTime формально состоит из двух типов:
Date - дата с точностью до дня (должны учитываться високосные годы, реформы и прочие глюки),
Time - время в сутках (обычный числовой формат).

Фактически же в SQL Server оба этих типа явно не присутствуют,
поэтому их приходится эмулировать
(если появляется необходимость использовать эти типы отдельно).

Date можно легко засунуть в DateTime, обнулив время.
Time проще всего хранить в Integer как число секунд/миллисекунд,

PS: В рамках типа DateTime в сутках не может быть 23 часа (и 25 тоже). Такой уж у него формат.
...
Рейтинг: 0 / 0
08.05.2002, 04:19
    #32029690
Dikobrazz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа со временем и возникшие при этом проблемы.
Дополняя предыдущего оратора:
В datetime обе части содержат 4 байта, и отвечающая за время содержит число миллисекунд (хотя на деле получается 1/300 секунды), так что чисто теоретически туда можно запихать больше 100 часов, однако на деле сервер ругается на любую попытку запихать туда больше 24 часов даже в двоичном формате (не говоря уже о преобразовании из строки).
Так, select cast(0x018b81ff as datetime) возвращает без 1 секунды (точнее, без 1/300 секунды) полночь, а select cast(0x018b8200 as datetime) уже выдает ошибку.
Так что, по-видимому, придется хранить время в своем формате.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Работа со временем и возникшие при этом проблемы. / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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