Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как отрезать время в параметре DateTime? [D6, MSSQL]


Страницы:   1 2

AndrewK ©   (2004-04-14 15:41:00) 

Передаю в хранимую процедуру параметр типа DateTime со временем.
Как мне получить параметр типа datetime в самой процедуре без этого времени.
Например:
передается     '01.01.2002 12:10:15.023'
надо получить  '01.01.2002 00:00:00.000'


AndrewK   (2004-04-14 17:05:00) [1]

Спасибо всем. Все получилось.

Мне действительно надо было отрезать время в процедуре. Я пытаюсь побольше логики выкинуть на серверную часть.


Ega23   (2004-04-14 16:42:00) [2]

"получить параметр типа datetime в самой процедуре без этого времени"

Совершенно правильно! Есть входной параметр типа datetime, он подаётся со временем. Нужно это время "отсечь". Конечно, на клиенте проще Trunc сделать, но ему же в процедуре надо...


Fay   (2004-04-14 16:38:00) [3]

Я просто хотел сказать, что есть быстрые правильные способы.


Johnmen   (2004-04-14 16:35:00) [4]

>Fay ©   (14.04.04 16:32) [17]

С отрицаловкой не работаю... :)


Fay   (2004-04-14 16:32:00) [5]

2Johnmen ©   (14.04.04 16:24) [14]
Проверь '17530101 00:00:00.000'


bushmen   (2004-04-14 16:29:00) [6]

>Как мне получить параметр типа datetime в самой процедуре без >этого времени.
>Например:
>передается     '01.01.2002 12:10:15.023'
>надо получить  '01.01.2002 00:00:00.000'

1) А почему этот параметр на клиенте нельзя подготавливать?


Fay   (2004-04-14 16:25:00) [7]

2Ega23 ©   (14.04.04 16:23) [13]
Человеку надо "получить параметр типа datetime в самой процедуре без этого времени"


Johnmen   (2004-04-14 16:24:00) [8]

>Ega23 ©
>Fay ©  

Про округление намек ? Тогда
@MyDate=Cast(Cast(@MyDate-0.5 as int) as datetime)


Ega23   (2004-04-14 16:23:00) [9]

Ребят, да о какой скорости спорите?! Человеку параметру входному в процедуре Trunc надо сделать, вот и всё. Какие 650000 записей?


Ega23   (2004-04-14 16:21:00) [10]

Проверь '20040101 12:00:01.000' и '20040101 11:59:59.000'

Да, это что-то я позабыл....

Тогда так:
@dt1=Cast(Round(Cast(@dt1 as float),0,1) as datetime)


Fay   (2004-04-14 16:19:00) [11]

Все фетчил? Что говорит сравнение?


bushmen   (2004-04-14 16:17:00) [12]

> Fay ©
Что значит, скорость не волнует?
У меня этот вывел 650 000 записей за 3 секунды


Fay   (2004-04-14 16:14:00) [13]

2bushmen ©   (14.04.04 16:12) [8]
Если скорость не волнует, то м.б. и проще...


bushmen   (2004-04-14 16:12:00) [14]

А не проще ли так:

select convert(varchar(10), dat1, 104) + ' 00:00:00.000' from table1

?


Fay   (2004-04-14 16:07:00) [15]

2Ega23 ©   (14.04.04 15:59) [6]
Проверь '20040101 12:00:01.000' и '20040101 11:59:59.000'
8)


Ega23   (2004-04-14 15:59:00) [16]

Зачем та сложно?
@MyDate=Cast(Cast(@MyDate as int) as datetime)


Fay   (2004-04-14 15:53:00) [17]

2-й способ быстрее на ~10%...
declare
@dt datetime

select @dt = GetDate()

select
 convert(datetime, convert(int, SubString(convert(binary(8), @dt), 1, 4)))

select
 dateadd(dd, datediff(dd, '', @dt), '')


sniknik   (2004-04-14 15:47:00) [18]

cast(round(cast(xxxx as float), 0, 1) as datetime)

а не проще параметр при передаче "урезать"?


Vlad   (2004-04-14 15:47:00) [19]


> Как мне получить параметр типа datetime в самой процедуре
> без этого времени.

Чтобы получить параметр без времени надо передать параметр без времени
Trunc(<дата>)


Johnmen   (2004-04-14 15:47:00) [20]

Передать без времени...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо