Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PowerBuilder Новый топик    Ответить
 Поле DateTime в DW и Retrieve  [new]
Khodiki
Member

Откуда: UFA
Сообщений: 120
Работа с сервером SQL через MSS Microsoft SQL Server
Есть DW c полем DateTime и Retrieve аргумент типа Date
Поле DateTime=Date
Все прекрасно работает пока DateTime имеет вид 16-06-2009 00:00:00
А как сделать чтобы работало если поле DateTime имеет вид 16-06-2009 17:11:00
мне нужны все документы за одну дату, независимо от времени
16 июн 09, 15:14    [7305576]     Ответить | Цитировать Сообщить модератору
 Re: Поле DateTime в DW и Retrieve  [new]
Anatoly Moskovsky
Member

Откуда: Odessa
Сообщений: 6610
Khodiki
Работа с сервером SQL через MSS Microsoft SQL Server
Есть DW c полем DateTime и Retrieve аргумент типа Date
Поле DateTime=Date
Все прекрасно работает пока DateTime имеет вид 16-06-2009 00:00:00
А как сделать чтобы работало если поле DateTime имеет вид 16-06-2009 17:11:00
мне нужны все документы за одну дату, независимо от времени

в запросе пишите такой фильтр:
dt >= :arg and dt < :arg + 1

вместо ":arg + 1" подставьте операцию прибавления дня к дате в вашей СУБД.
16 июн 09, 15:20    [7305613]     Ответить | Цитировать Сообщить модератору
 Re: Поле DateTime в DW и Retrieve  [new]
Khodiki
Member

Откуда: UFA
Сообщений: 120
Anatoly Moskovsky,
Спасибо помогло только
dt >= :arg and dt < Dateadd(day,1,:arg)
а 1 просто прибавлять отказывался, хотя прибавление 1 к DATE на PB 7 у меня работало
счас PB 9
16 июн 09, 15:42    [7305731]     Ответить | Цитировать Сообщить модератору
 Re: Поле DateTime в DW и Retrieve  [new]
Anatoly Moskovsky
Member

Откуда: Odessa
Сообщений: 6610
Khodiki

dt >= :arg and dt < Dateadd(day,1,:arg)
а 1 просто прибавлять отказывался, хотя прибавление 1 к DATE на PB 7 у меня работало
счас PB 9

Это зависит от СУБД а не от PB.
Например в Oracle дата + число поддерживается.
16 июн 09, 15:49    [7305777]     Ответить | Цитировать Сообщить модератору
 Re: Поле DateTime в DW и Retrieve  [new]
dvvarna
Member

Откуда: Белгород -> Москва
Сообщений: 50
А не проще в WHERE конвертирование указать
Примерно так...
WHERE CONVERT(DATE, поле_в_datetime) = аргумент_в_date
17 июн 09, 09:39    [7308252]     Ответить | Цитировать Сообщить модератору
 Re: Поле DateTime в DW и Retrieve  [new]
ChV
Member

Откуда: Москва
Сообщений: 271
Я абсолютно согласен с dvvarna - в условиях выборки должны сравниваться одинаковые типы данных, только
dvvarna
WHERE CONVERT( DATE , поле_в_datetime) = аргумент_в_date
тип Date отсутствует в Microsoft SQL Server 2000, но появился в более поздних версиях. Так, что смотря какая версия Microsoft SQL Server у Khodiki.
В случае Microsoft SQL Server 2000 ( если arg имеет тип DateTime ) :
Я предпочитаю тот же "фильтр", что предлагает Anatoly Moskovsky, но можно использовать и функцию DATEDIFF
where DATEDIFF ( dd , dt , :arg )  = 0
В более поздних версия Microsoft SQL Server( если arg имеет тип Date )
where Convert ( Date , dt  )  = :arg
Картинка с другого сайта.
Good Luck !
17 июн 09, 10:56    [7308743]     Ответить | Цитировать Сообщить модератору
 Re: Поле DateTime в DW и Retrieve  [new]
Anatoly Moskovsky
Member

Откуда: Odessa
Сообщений: 6610
dvvarna
А не проще в WHERE конвертирование указать
Примерно так...
WHERE CONVERT(DATE, поле_в_datetime) = аргумент_в_date

Если вам наплевать на производительность - может и проще.
17 июн 09, 12:40    [7309654]     Ответить | Цитировать Сообщить модератору
 Re: Поле DateTime в DW и Retrieve  [new]
Локшин Марк
Member

Откуда: Воронеж
Сообщений: 3154
Anatoly Moskovsky
dvvarna
А не проще в WHERE конвертирование указать
Примерно так...
WHERE CONVERT(DATE, поле_в_datetime) = аргумент_в_date

Если вам наплевать на производительность - может и проще.

И что удивительно, в некоторых случаях MS SQL сможет использовать индекс с DATEDIFF.
17 июн 09, 13:08    [7309928]     Ответить | Цитировать Сообщить модератору
 Re: Поле DateTime в DW и Retrieve  [new]
Anatoly Moskovsky
Member

Откуда: Odessa
Сообщений: 6610
Локшин Марк

Если вам наплевать на производительность - может и проще.

И что удивительно, в некоторых случаях MS SQL сможет использовать индекс с DATEDIFF.[/quot]
Сервер конечно возможно и справится с конкретной этой оптимизацией, но если и в других местах повтыкать ему палки в колеса, то конечный результат может получиться плачевным, потому что не все оптимизации можно провести одновременно.
17 июн 09, 18:09    [7312323]     Ответить | Цитировать Сообщить модератору
Все форумы / PowerBuilder Ответить