ПредишенСледващото

Там са всички компоненти на датата в едно цяло число
Как да се създаде пълна дата?

Декларирам @god вътр, @mes вътр, @day вътр, @hour вътр, @min вътр, @s вътр
Декларирам @dd дата и час


Декларирам @god вътр, @mes вътр, @day вътр, @hour вътр, @min вътр, @sec вътр
Декларирам @dd дата и час

избран @dd = dateadd (SS @ сек, dateadd (MI, @ мин, dateadd (HH, @ часа, dateadd (дд, @ ден-1, dateadd (mm @ MES-1, dateadd (гг, @ Богу 1900 ""))))))
печат @dd


> Zz_ # XA0; (11/25/05 12:50) [2]

Така че мисля, че по този начин, за да бъде приемливо?
Мислех, че има нещо по-елегантно.
Е, ако капитанът е информиран # XA0; воля.
Благодаря.

Ами първото нещо, което идва на ум. Може да бъде извратен и по-стръмен. # XA0 ;: о)

Изработени от дата intov низ във формат ODBC-каноничен
"ГГГГ-ММ-DDD"

Олга >> # XA0; (11/25/05 12:56) [4]

>> Така че мисля, че по този начин, за да бъде приемливо?
>> Аз мисля, че има нещо по-елегантно.

Това е най-бързият начин за изпълнение на време
елегантен начин да възпрепятстват безсрамно

И стъпвайки върху гребла

"ГГГГ-ММ-DDD" - това правилно яде всеки сървър?

Олга >> # XA0; (11/25/05 13:03) [8]


> Олга # XA0; (11/25/05 13:03) [8]
> "ГГГГ-ММ-DDD" - това правилно яде всеки сървър?

За да сте сигурни, че яде (реч essesno, за MS SQL само):

"ГГГГ-ММ-DDD" - това правилно яде всеки сървър?

Всеки MSSQL са в тази посока

> "YYYYMMDDHHmmSS", един по никакъв начин.
"YYyyMmDd чч: пп: сс: ZZZ"

> Do MSSQL-ите нула дата за всички е "19000101"
да не се притеснява за това, и се използва друг, при условие параметър

"YYyyMmDd чч: пп: сс: ZZZ"
Мистицизъм, в действителност, този дизайн работи, като това е първата, която аз се опитах.
Spasobo, сега аз ще знам.

> Използвайте опциите

В този случай не е необходимо, тъй като тя е съхранена процедура, органът, който трябва да бъде дата и час се генерират според някои критерии.

> В този случай, той не е подходящ, тъй като тя е съхранена процедура, органът, който трябва да бъде дата и час форма
> Според някои критерии.
"Някои от тези критерии" не може да се справят с обема? Дайте им само на линия?

-----------------------------
ние създаваме нашите собствени трудности, които след това геройски преодоляване.

послепис
"Изолирайте" от номера (datataym) например месец и се слага в друг номер, Computer светкавица и по-бързо от представителството низ от датата на "копаят" и skonvertit в един и същ номер. сравни броя твърде лесно за него. и т.н.
за разлика от човека, който вижда линията веднага, а броят все още е необходимо да се разбере, да се разбере, че това е датата, в него.
t.chto. всички тези намеци за "някои критерии" е защитата на собствените си бази, а не на програми за скорост и bezglyuchnoy. извинения строго golvorya. IMHO.


> Всички тези намеци за "някои критерии" е да защитава собствената си
> Съоръжения в обменните курсове и bezglyuchnoy програми.
> Строго golvorya извинения. IMHO.

Не, искам да се справят добре и разумно. Универсално за всички MSSQL.
Цел: # XA0; процедура трябва да напише данните на тази дата - вчера 22:00
Така че, който от 2-та варианта, предложен по-лишено от грешки (скорост не ме интересува - датата се изчислява веднъж):
ДЕКЛАРИРАМЕ @d час и дата, @year вътр, @month вътр, @day вътр

-- вариант 1
комплект @ г = отливка (отливка (DatePart (година, GetDate () - 1) като CHAR (4)) +
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; отливка (DatePart (месец, GetDate () - 1) като знак (2)) +
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; отливка (DatePart (ден, GetDate () - 1) като знак (2)) +
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; "22:00:00" като дата и час)
печат @d

-- вариант 2
SET @ година = DATEPART (година, GetDate () - 1)
SET @ месец = DATEPART (месец, GetDate () - 1)
SET @ ден = DATEPART (ден, GetDate () - 1)
SELECT @ г = DATEADD (час, 22, DATEADD (ден @ ден-1, DATEADD (месец, @ месеца-1, DATEADD (година, @ година-1900,0))))

> Така че, който от 2-та варианта, предложен по-бъг безплатно
вие казвате точно? и ако двамата не ми харесва?
и все пак, имате определен специален случай, че е необходимо да се направи -> [24] И така, какво, по дяволите, искаш да кажеш zadaesh obshy и неясни въпрос "Преобразуване на дата (T-SQL)"?
23 пост, защото на тази вода в хаванче смлян.

моята версия (тя е esstestvenno си смятам, че най-добрите и най-без бъгове)

отпечатване DATEADD (HH, 22, кръгла (С (GetDate () като поплавък) -1, 0, 1))

Да, просто и с вкус.
По някаква причина, повечето от тях не се е случило до този момент доведе до поплавъка.
Благодаря.

Датата ще бъде закръглена, както следва:
dateadd (дд, datediff (дд, "", getdate ()), "")

настроен nocount на
декларирам
# XA0; @ diff_1 междинно съединение,
# XA0; @ diff_2 междинно съединение,
# XA0; @dummy дата и час,
# XA0; @dt дата и час,
# XA0; @i междинно съединение,
# XA0; @n Int

изберете
# XA0; @dt = GetDate (),
# XA0; @i = 0,
# XA0; @n = 99999

докато @i <@n begin
# XA0; изберете
# XA0; # XA0; @i = @i + 1,
# XA0; # XA0; @dummy = кръг (отливка (@dt като поплавък), 0, 1)
край

изберете
# XA0; @ diff_1 = datediff (MS, @dt, getdate ()),
# XA0; @dt = getdate (),
# XA0; @i = 0

докато @i <@n begin
# XA0; изберете
# XA0; # XA0; @i = @i + 1,
# XA0; # XA0; @dummy = dateadd (HH, 22, dateadd (дд, datediff (дд, "", @dt), ""))
край

изберете @ diff_2 = datediff (MS, @dt, getdate ())

така също записа се окаже по-лесно (по-кратък)
отпечатване DateAdd (HH, 22, DateDiff (дд, 0, GetDate ()) - 1)

Вие живеете - и да се учат.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!