Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: CL | DM;

Вниз

Как отрезать время в параметре DateTime?   Найти похожие ветки 

 
AndrewK ©   (2004-04-14 15:41) [0]

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


 
stone ©   (2004-04-14 15:44) [1]

писать функцию, в которой "обрезать" время


 
Johnmen ©   (2004-04-14 15:47) [2]

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


 
Vlad ©   (2004-04-14 15:47) [3]


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

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


 
sniknik ©   (2004-04-14 15:47) [4]

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

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


 
Fay ©   (2004-04-14 15:53) [5]

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), "")


 
Ega23 ©   (2004-04-14 15:59) [6]

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


 
Fay ©   (2004-04-14 16:07) [7]

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


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

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

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

?


 
Fay ©   (2004-04-14 16:14) [9]

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


 
bushmen ©   (2004-04-14 16:17) [10]

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


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

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


 
Ega23 ©   (2004-04-14 16:21) [12]

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

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

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


 
Ega23 ©   (2004-04-14 16:23) [13]

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


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

>Ega23 ©
>Fay ©  

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


 
Fay ©   (2004-04-14 16:25) [15]

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


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

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

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


 
Fay ©   (2004-04-14 16:32) [17]

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


 
Johnmen ©   (2004-04-14 16:35) [18]

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

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


 
Fay ©   (2004-04-14 16:38) [19]

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


 
Ega23 ©   (2004-04-14 16:42) [20]

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

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


 
AndrewK ©   (2004-04-14 17:05) [21]

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

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



Страницы: 1 вся ветка

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.029 c
3-1081533189
SergP
2004-04-09 21:53
2004.04.11
Можно ли сделать такой интерестный select?


1-1079963769
Layner
2004-03-22 16:56
2004.04.11
Как после инсталяции сервиса, сразу же запустить его?


1-1080018399
Pr0ger
2004-03-23 08:06
2004.04.11
List Box


1-1079952775
SMT
2004-03-22 13:52
2004.04.11
Исходники Quick report: файл qrprev.pas


1-1080113885
Maza_Faka
2004-03-24 10:38
2004.04.11
Dlephi8