A konverzió időpontja (T-SQL)

Vannak minden eleme a dátum egy int
Hogyan hozzunk létre egy teljes dátum?

állapítsa @god int, int @mes, @year int, int @hour, @min int, int @s
állapítsa @dd datetime


állapítsa @god int, int @mes, @year int, int @hour, @min int, int @sec
állapítsa @dd datetime

beállítva @dd = dateadd (ss, @ sec, dateadd (MI, @ min, dateadd (HH, @ óra, dateadd (dd, @ nap-1, dateadd (mm, @ MES-1, dateadd (yy, @ god- 1900 ""))))))
print @dd


> Zz_ # XA0; (25.11.05 00:50) [2]

Tehát úgy gondolja, hogy ily módon is elfogadható?
Azt hittem, hogy van valami elegánsabb.
Nos, ha a mester tanácsos # XA0; akarat.
Köszönöm.

Nos, az első dolog, ami eszébe jutott. Lehet perverz és meredekebb. # XA0 ;: o)

Készült intov dátum húr az ODBC-kanonikus formátumban
"Yyyy-mm-ddd"

Olga >> # XA0; (25.11.05 00:56) [4]

>> Tehát úgy gondolja, hogy ily módon is elfogadható?
>> Azt hiszem, hogy van valami elegánsabb.

Ez a leggyorsabb módja annak, hogy az időben történő teljesítmény
elegáns módon szégyentelenül akadályozzák

És lépve gereblye

„Éééé-ddd” - ez rendesen eszik olyan szerver?

Olga >> # XA0; (25.11.05 13:03) [8]


> Olga # XA0; (25.11.05 13:03) [8]
> „Éééé-ddd” - ez rendesen eszik olyan szerver?

Annak érdekében, hogy eszik (beszéd essesno, a MS SQL esetén):

„Éééé-ddd” - ez rendesen eszik olyan szerver?

Bármilyen MSSQL hogy ezen a vonalon

> „Ééééhhnnóóppmm” egy bármilyen módon.
"YYYYMMDD hh: nn: ss: zzz"

> Do MSSQL-s nulla időpont minden rendben van "19000101"
hogy ne zavarja ebben, és más, figyelemmel a paramétert használjuk

"YYYYMMDD hh: nn: ss: zzz"
Miszticizmus, sőt, ez a tervezési munkák, mint ez az első, hogy megpróbáltam.
Spasobo, most tudni fogom.

> A beállítások

Ebben az esetben nem szükséges, mert ez egy tárolt eljárást, a test, kell, hogy legyen a dátum és idő szerint létrehozott néhány feltételt.

> Ebben az esetben nem alkalmas, mert ez egy tárolt eljárást, a test, kell, hogy legyen dátum és idő formájában
> A bizonyos kritériumok alapján.
„Néhány kritérium” nem tudja kezelni a szám? Adj nekik csak egy sorban?

-----------------------------
mi magunk formáljuk nehézségek majd hősiesen küzdeni.

Ui
„Izolátum” a szám (datataym) pl hónapban, és tegye a másik számot, számítástechnikai Flash és gyorsabb, mint a húr ábrázolás időpontjának „dig” és skonvertit meg ugyanazt a számot. hasonlítsa össze a számokat, hogy túl könnyű. stb
ellentétben az ember, aki úgy látja, a vonal azonnal száma továbbra is szükség van, hogy ki, hogy megértsék, hogy ez a dátum is.
t.chto. Mindezen tippeket „néhány kritériumokat” védelmét saját felszerelése helyett a sebesség és bezglyuchnoy programokat. kifogások szigorúan golvorya. IMHO.


> Mindezek tippeket „néhány kritérium”, hogy megvédjék a saját
> Létesítmények árfolyamok és bezglyuchnoy programokat.
> Szigorúan golvorya kifogásokat. IMHO.

Nem, azt akarom, hogy jól és okosan. Univerzálisan minden MSSQL.
célkitűzés: # XA0; eljárást kell írni az adatokat ezen a napon - tegnap 22:00
Tehát melyik a 2 opció javasolt több hiba mentes (sebesség nem érdekel - a dátum kiszámítása egyszer):
DECLARE @d datetime, @day int, int @month, @year int

-- 1. lehetőség
set @ d = öntött (cast (DatePart (év, getdate () - 1), mint char (4)) +
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; öntött (DatePart (hónap, getdate () - 1), mint char (2)) +
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; öntött (DatePart (nap, getdate () - 1), mint char (2)) +
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; "22:00:00" a datetime)
print @d

-- 2. lehetőség
SET @ év = DATEPART (év, getdate () - 1)
SET @ hó = DATEPART (hónap, getdate () - 1)
SET @ nap = DATEPART (nap, getdate () - 1)
SELECT @ d = DATEADD (óra, 22, DATEADD (nap, @ nap-1, DATEADD (hó, @ hó-1, DATEADD (év, @ év-1900,0))))

> Tehát melyik a 2 opció javasolt több hiba mentes
mondod pontosan? és ha a két nem tetszik nekem?
és mégis, van egy bizonyos speciális eset, meg kell tennie -> [24], így mi a fenét jelent zadaesh obshy és homályos kérdés „konvertálása napján (T-SQL)”?
23 üzenet, mert ez a víz egy mozsárban őröljük.

én változata (ez volt az ő esstestvenno tartom a legjobb és bug-mentes)

print DATEADD (hh, 22, forduló (Cast (getdate () AS Float) -1, 0, 1))

Igen, egyszerűen és ízlésesen.
Valamilyen oknál fogva, a legtöbb nem fordult elő eddig vezet az úszó.
Köszönöm.

A dátum kerekítjük a következőképpen:
dateadd (dd, DATEDIFF (dd, "", getdate ()), "")

meghatározott nocount on
állapítsa
# XA0; @ diff_1 int,
# XA0; @ diff_2 int,
# XA0; @dummy datetime,
# XA0; @dt datetime,
# XA0; @i int,
# XA0; @n int

választ
# XA0; @dt = getdate (),
# XA0; @i = 0,
# XA0; nPr = 99999

míg @i <@n begin
# XA0; választ
# XA0; # XA0; @i = @i + 1,
# XA0; # XA0; @dummy = round (öntött (@dt például float), 0, 1)
vég

választ
# XA0; @ diff_1 = DATEDIFF (ms, @dt, getdate ()),
# XA0; @dt = getdate (),
# XA0; @i = 0

míg @i <@n begin
# XA0; választ
# XA0; # XA0; @i = @i + 1,
# XA0; # XA0; @dummy = dateadd (HH, 22, dateadd (dd, DATEDIFF (dd, "", @dt), ""))
vég

válasszuk @ diff_2 = DATEDIFF (ms, @dt, getdate ())

így is a rekord kiderülhet könnyebb (rövidebb)
nyomtatni DateAdd (HH, 22, DateDiff (dd, 0, getdate ()) - 1)

Élsz - és tanulni.

Kapcsolódó cikkek