|
Куда проподает время из DataTime?
|
|||
---|---|---|---|
#18+
Люди, никто не встречался с такой вещью: в БД есть данные за все периоды времени расбросанные хаотично. Делю отчет по последнему данному за каждый час. В какой то из этих часов получается 0, хотя данные за этот час есть. Такое ощущещине, как будто селект промахивается мимо интервала запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2003, 15:09 |
|
Куда проподает время из DataTime?
|
|||
---|---|---|---|
#18+
Нужно смотреть запрос ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2003, 15:35 |
|
Куда проподает время из DataTime?
|
|||
---|---|---|---|
#18+
Запрос совсем простой: 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. Может все дело в миллисекудках? Есть статейка на эту тему тут: |> Правда не совсем пойму что к чему :-( Может кто-то сталкивался? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2003, 16:04 |
|
Куда проподает время из DataTime?
|
|||
---|---|---|---|
#18+
Ой, сорри! Вот тут: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsqlmag03/html/WhenDatetimeDataTypesBehaveStrangely.asp ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2003, 16:05 |
|
Куда проподает время из DataTime?
|
|||
---|---|---|---|
#18+
а почему 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' ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2003, 18:05 |
|
Куда проподает время из DataTime?
|
|||
---|---|---|---|
#18+
Ну да, конечно так. (Это опечатка в сообщении, а не в тексте программы). ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2003, 08:49 |
|
Куда проподает время из DataTime?
|
|||
---|---|---|---|
#18+
> 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' ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2003, 14:41 |
|
Куда проподает время из DataTime?
|
|||
---|---|---|---|
#18+
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 милисекунды не запишешь. А они там есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2003, 15:03 |
|
Куда проподает время из DataTime?
|
|||
---|---|---|---|
#18+
Если данные у тебя хранятся на SQL сервер ,то можно так: Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2003, 21:41 |
|
Куда проподает время из DataTime?
|
|||
---|---|---|---|
#18+
Спасибо за ответ. А не могли бы Вы подробнее описать что делает и как работает эта функция? Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2003, 08:54 |
|
Куда проподает время из DataTime?
|
|||
---|---|---|---|
#18+
А что,помогло ? А не могли бы Вы подробнее описать что делает и как работает эта функция? В двух словах,не ответить.Почитай справку по SqlServer (Bol) В твоем случае внутренний CONVERT преобразует дату в строку,отбрасывая при этом миллисекунды.Внешний CONVERT выполняет обратное преобразование из строки в дату. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2003, 02:04 |
|
Куда проподает время из DataTime?
|
|||
---|---|---|---|
#18+
Ну насчет того что точно помогло, сказать не могу, т.к. ситуация встречается редко и отловить сложно. Но то что в запросе возвращаются даты с миллисекундами, которые равны 0 - это да. Что уже не плохо. По крайней мере точно знаешь, что от ничего не ускользнет от такого запроса. Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2003, 08:50 |
|
Куда проподает время из DataTime?
|
|||
---|---|---|---|
#18+
Можно и без конверта написать... Всё прекрасно отработает Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2003, 09:50 |
|
Куда проподает время из DataTime?
|
|||
---|---|---|---|
#18+
Но тут же вся проблема не в конверте даты, а в конверте времени. В SQL сервере в datatime время хранится с миллисекундами, но их не видно при запросе. Хотя они могут повлиять на возвращенный после запроса рекордсет, если после указанной вами секунды есть миллисекунды. Как правило на них внимание никто не обращает, а зря: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsqlmag03/html/WhenDatetimeDataTypesBehaveStrangely.asp ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2003, 10:56 |
|
Куда проподает время из DataTime?
|
|||
---|---|---|---|
#18+
А спробовать Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2003, 11:13 |
|
Куда проподает время из DataTime?
|
|||
---|---|---|---|
#18+
> А проблема как раз относительно этого "<=" 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2003, 13:57 |
|
|
start [/forum/topic.php?fid=60&msg=32299206&tid=2170575]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 332ms |
total: | 491ms |
0 / 0 |