Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Куда проподает время из DataTime? / 16 сообщений из 16, страница 1 из 1
16.10.2003, 15:09
    #32295451
oops1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда проподает время из DataTime?
Люди, никто не встречался с такой вещью: в БД есть данные за все периоды времени расбросанные хаотично. Делю отчет по последнему данному за каждый час. В какой то из этих часов получается 0, хотя данные за этот час есть. Такое ощущещине, как будто селект промахивается мимо интервала запроса.
...
Рейтинг: 0 / 0
16.10.2003, 15:35
    #32295505
Serg_71
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда проподает время из DataTime?
Нужно смотреть запрос
...
Рейтинг: 0 / 0
16.10.2003, 16:04
    #32295581
oops1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда проподает время из DataTime?
Запрос совсем простой: select * top 1 from xxxx where time>'01/02/2003 01:00:00' and time>'01/02/2003 02:00:00' и так за каждый час в течении суток. И вот за какой-то час (например за 13:00) мне возврощается 0, хотя в базе точно есть данные за период с 12:00 до 13:00.
Может все дело в миллисекудках? Есть статейка на эту тему тут:

|>

Правда не совсем пойму что к чему :-( Может кто-то сталкивался?
...
Рейтинг: 0 / 0
16.10.2003, 16:05
    #32295586
oops1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда проподает время из DataTime?
Ой, сорри! Вот тут:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsqlmag03/html/WhenDatetimeDataTypesBehaveStrangely.asp
...
Рейтинг: 0 / 0
16.10.2003, 18:05
    #32295788
Tany
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда проподает время из DataTime?
а почему
where time>'01/02/2003 01:00:00' and time>'01/02/2003 02:00:00'

разве не так надо
where time>'01/02/2003 01:00:00' and time<'01/02/2003 02:00:00'
...
Рейтинг: 0 / 0
17.10.2003, 08:49
    #32296103
oops1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда проподает время из DataTime?
Ну да, конечно так. (Это опечатка в сообщении, а не в тексте программы).
...
Рейтинг: 0 / 0
17.10.2003, 14:41
    #32296746
Processor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда проподает время из DataTime?
> where time>'01/02/2003 01:00:00' and time<'01/02/2003 02:00:00'
Чтобы не путаться со знаками, используй between '01/02/2003 01:00:00' and '01/02/2003 02:00:00'
...
Рейтинг: 0 / 0
17.10.2003, 15:03
    #32296785
oops1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда проподает время из DataTime?
C between-ом ситуация похуже. Он обеспечивает интервал > какого-то и < какого-то, а мне нужно > и <=. Если я буду скокать по часам between-ом, то буду терять значения за круглый час. :-(((.

А проблема как раз относительно этого "<="
Например, Если у меня в базе лежит данное с меткой времени 2/2/2003 18:00:00, а запрос у меня такой:


select * from XXX wheкe time > 2/2/2003 17:00:00 and time <= 2/2/2003 18:00:00

В принципе судя по запросу я должен поймать значение которое лежит у меня в базе за 2/2/2003 18:00:00, но иногда этого не происходит.
Я пока предполагаю что причина может быть в том, что в базе, кроме секунд, в метке времени могли закрасться миллисекунды. Если это так то я своим запросом я уже промахнуть мимо данного если оно имеет метку времени:
"2/2/2003 18:00:00.001" - 1 миллисекунда после 18:00:00. Вот об этом то и толкует вышеизложенная статья. А как этого избежать неизвесно, т.к. ни SQL сервер ни в бейсиковый DataTime милисекунды не запишешь. А они там есть.
...
Рейтинг: 0 / 0
17.10.2003, 21:41
    #32297257
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда проподает время из DataTime?
Если данные у тебя хранятся на SQL сервер ,то можно так:
Код: plaintext
1.
where convert(datetime,convert(varchar,time, 120 ), 121 ) >'2003-02-02 17:00:00 '
 and convert(datetime,convert(varchar,time, 120 ), 121 )  <='2003-02-02 18:00:00 '
...
Рейтинг: 0 / 0
20.10.2003, 08:54
    #32297936
oops1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда проподает время из DataTime?
Спасибо за ответ. А не могли бы Вы подробнее описать что делает и как работает эта функция? Спасибо
...
Рейтинг: 0 / 0
21.10.2003, 02:04
    #32299206
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда проподает время из DataTime?
А что,помогло ?
А не могли бы Вы подробнее описать что делает и как работает эта функция? В двух словах,не ответить.Почитай справку по SqlServer (Bol)
В твоем случае внутренний CONVERT преобразует дату в строку,отбрасывая при этом миллисекунды.Внешний CONVERT выполняет обратное преобразование
из строки в дату.
...
Рейтинг: 0 / 0
21.10.2003, 08:50
    #32299288
oops1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда проподает время из DataTime?
Ну насчет того что точно помогло, сказать не могу, т.к. ситуация встречается редко и отловить сложно. Но то что в запросе возвращаются даты с миллисекундами, которые равны 0 - это да. Что уже не плохо. По крайней мере точно знаешь, что от ничего не ускользнет от такого запроса. Спасибо
...
Рейтинг: 0 / 0
21.10.2003, 09:50
    #32299333
tpg
tpg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда проподает время из DataTime?
Можно и без конверта написать... Всё прекрасно отработает
Код: plaintext
1.
where time > '20030213 17:00:00'
 and time'20030213 18:00:00'
Формат даты ггггммдд сервер поймет однозначно (здесь день я нарочно выбрал 13, чтобы наглядней было).
...
Рейтинг: 0 / 0
21.10.2003, 10:56
    #32299410
oops1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда проподает время из DataTime?
Но тут же вся проблема не в конверте даты, а в конверте времени. В SQL сервере в datatime время хранится с миллисекундами, но их не видно при запросе. Хотя они могут повлиять на возвращенный после запроса рекордсет, если после указанной вами секунды есть миллисекунды. Как правило на них внимание никто не обращает, а зря:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsqlmag03/html/WhenDatetimeDataTypesBehaveStrangely.asp
...
Рейтинг: 0 / 0
21.10.2003, 11:13
    #32299437
tpg
tpg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда проподает время из DataTime?
А спробовать
Код: plaintext
1.
2.
where time > '20030213 17:00:00.000'
 and time<='20030213 18:00:00.000'
, что будет?
...
Рейтинг: 0 / 0
21.10.2003, 13:57
    #32299864
Processor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда проподает время из DataTime?
> А проблема как раз относительно этого "<="

SQL Server Book Online:

BETWEEN (T-SQL)
Syntax
test_expression [NOT] BETWEEN begin_expression AND end_expression
.....
Result Value
BETWEEN returns TRUE
if the value of test_expression is greater than or equal to the value of begin_expression
and less than or equal to the value of end_expression
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Куда проподает время из DataTime? / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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