Conversia datei (t-sql)

Există toate componentele date în variabile de tip int
Cum de a genera o dată completă?

declare @god int, @mes int, @ ziua int, @hour int, @min int, @s int
declară @dd datetime








declare @god int, @mes int, @ day int, @hour int, @min int, @sec int
declară @dd datetime

set @dd = dateadd (ss, @ sec, dateadd (mi, @ min, dateadd (hh, @ oră, dateadd (dd, @ zi-1, dateadd (mm, @ mes-1, dateadd (yy, @ Dumnezeu- 1900, ")))))))
print @ dd


> Zz_ # xA0; (25.11.05 12:50) [2]

Deci credeți că această metodă este destul de acceptabilă?
Am crezut că era ceva mai elegant.
Ei bine, din moment ce sfatuiesc maestrii, # xA0 și o voi face.
Mulțumesc.

Ei bine, acesta este primul lucru care mi-a venit în cap. Poți și piere brusc. # xA0 ;: o)

Efectuați un șir de date int în format odbc-canonical
"Yyyy-mm-ddd"

>> Olga # xA0; (25.11.05 12:56) [4]

>> Deci credeți că această metodă este destul de acceptabilă?
>> Am crezut că era ceva mai elegant.

Aceasta este cea mai rapida modalitate de a executa timp
modalități elegante de frânare nerușinată

Și pas pe greblă

"yyyy-mm-ddd" - este corect consumat de orice server?

>> Olga # xA0; (25 noiembrie 05 13:03) [8]


> Olga # xA0; (25 noiembrie 05 13:03) [8]
> "yyyy-mm-ddd" - este alimentat corect de orice server?

Pentru o certitudine deplină că mușcă (discurs, essesno, doar despre MS SQL):

"yyyy-mm-ddd" - este corect consumat de orice server?

Orice MSSQL va accepta această linie

> "YYYYMMDDHHmmSS", și în orice fel.
"yyyymmdd hh: nn: ss: zzz"

> pentru toate dacă MSSQL-e-zero data va fi "19000101"
pentru a nu deranja acest lucru, iar altele, tema PARAMETRII UTILIZĂRII

"yyyymmdd hh: nn: ss: zzz"
Mistica, de fapt, acest design funcționează, ca acesta este primul lucru pe care l-am încercat.
Spasobo, o să știu acum.

> PARAMETRII DE UTILIZARE

În acest caz, acest lucru nu este potrivit, deoarece este o procedură stocată, în corpul căruia se formează data și ora dorite conform unor criterii.

> În acest caz, acest lucru nu este potrivit, deoarece este o procedură stocată, în corpul căruia se formează data și ora dorite
> prin anumite criterii.
"unele criterii" nu se pot ocupa de numere? Dau doar liniile?







-----------------------------
ne creează propriile dificultăți, pe care apoi le depășim eroic.

P.S.
"izola" de la numărul (datacomm), de exemplu, o lună și pune-l într-un alt număr, calculatorul este mai rapid și mai rapid decât de la reprezentarea șirului de date "dig out" și converti la același număr. compara numerele este, de asemenea, mai ușor. și așa mai departe.
spre deosebire de persoana care vede imediat linia și numărul este încă de dezmembrat, trebuie să se înțeleagă că aceasta este data în ea.
t.chto. toate aceste aluzii la "unele criterii" este de a vă proteja confortul în loc de viteza și blândețea programelor. scuzele sunt strict olandeze. IMHO.


> toate aceste aluzii la "anumite criterii" sunt protecția propriului
> Comoditate în loc de viteză și bug-free programe.
> Excuse este strict olandeză. IMHO.

Nu, vreau să fac bine și competent. Universal pentru orice MSSQL.
obiectiv: # xA0; procedura ar trebui să scrie date cu această dată - ieri la ora 22:00
Deci, care dintre cele 2 opțiuni propuse este mai mult buggy (viteza nu-i pasă - data este calculată o singură dată):
DECLARE @d datetime, @year int, @month int, @ day int

-- opțiunea 1
set @ d = cast (distribuit (DatePart (an, GetDate () - 1) ca char (4)) +
# xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; cast (DataPart (lună, GetDate () - 1) ca char (2)) +
# xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; cast (DataPart (zi, GetDate () - 1) ca char (2)) +
# xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; "22:00:00" ca datatime)
print @ d

-- Opțiunea 2
SET @ year = DATEPART (an, GetDate () - 1)
SET @ month = DATEPART (luna, GetDate () - 1)
SET @ day = DATEPART (zi, GetDate () - 1)
SELECT @ d = DATEADD (oră, 22, DATEADD (zi, @ zi-1, DATEADD (lună, lună-1,

> Deci, care din cele 2 opțiuni propuse este mai blamată
să vă răspundeți exact? Și dacă nu-mi plac amândoi?
și totuși, la cazul particular concret, este necesar să facem -> [24], astfel încât ce linie să întrebați întrebarea generală și vagă "Conversia datei (T-SQL)" înseamnă?
23 Din acest motiv, apa din mortar a fost mărunțită.

opțiunea mea (desigur, el este cel care cred că este cel mai bun și bezglyuchnym)

print DATEADD (hh, 22, runda (distribuție (GetDate () AS Float) -1, 0, 1))

Da, prost și gustos.
Din anumite motive, nu sa întâmplat până la data să plutească.
Mulțumesc.

Data este mai rapid rotunjită astfel:
dateadd (dd, datate (dd, "", getdate ()), "")

setați noaptea la
declara
# xA0; @ diff_1 int,
# xA0; @ diff_2 int,
# xA0; @dummy datetime,
# xA0; @dt datetime,
# xA0; @i int,
# xA0; @n int

selecta
# xA0; @dt = GetDate ();
# xA0; @i = 0,
# xA0; @n = 99999

în timp ce @i <@n begin
# xA0; selecta
# xA0; # xA0; @i = 1 + 1,
# xA0; # xA0; @dummy = rotund (turnat (@dt ca float), 0, 1)
capăt

selecta
# xA0; @ diff_1 = datediff (ms, @dt, getdate ());
# xA0; @dt = getdate (),
# xA0; @i = 0

în timp ce @i <@n begin
# xA0; selecta
# xA0; # xA0; @i = 1 + 1,
# xA0; # xA0; @dummy = dateadd (hh, 22, dateadd (dd, datediff (dd, "", @ dt), "))
capăt

selectați @ diff_2 = datediff (ms, @dt, getdate ())

astfel încât și înregistrarea este mai ușor de obținut (mai scurt)
imprimare DateAdd (hh, 22, DateDiff (dd, 0, GetDate ()) - 1)

Trăiți și învățați.







Articole similare

Trimiteți-le prietenilor: