![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как отрезать время в параметре DateTime? [D6, MSSQL]
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]Передать без времени...