Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Trenutno VREME u sql-u

[es] :: MS SQL :: Trenutno VREME u sql-u

[ Pregleda: 3441 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

brankec
Bosanski Brod

Član broj: 140157
Poruke: 161
*.teol.net.



Profil

icon Trenutno VREME u sql-u12.09.2008. u 06:40 - pre 190 meseci
Imam sledeci problem: U firmi u kojoj radim postoji Sistem za evidenciju radnog vremena (registruju se dolasci i odlasci radnika). Jedan od mojih zadataka je da u odredjeno vreme (recimo u 9 sati) javim koliko je radnika doslo na posao za taj dan (od 00:00 sati do gore navedenih 9 sati). Ja to radim sa sledecim uslovom (DT je kolona sa registrovanim vremenima):

WHERE DT BETWEEN '09/12/2008' AND GETDATE()

Zanima me (za ovaj primer ali i inace) sta da uradim da ne moram rucno ispravljati svaki novi dan prvo vreme ( '09/12/2008' u ovom slucaju). Odnosno kako da dobijem trenutni datum ali da vreme bude '00:00' (nesto kao getdate()- 'trenutno vreme'='danasnji datum' i '00:00' - vreme).

Nadam se da nisam previse iskomplikovao. Unapred hvala.
 
Odgovor na temu

Branko_S

Član broj: 130918
Poruke: 24
161.51.11.*



Profil

icon Re: Trenutno VREME u sql-u12.09.2008. u 08:34 - pre 190 meseci
Recimo ovako:
WHERE DT BETWEEN Cast((Left(GetDate(), 11) + ' 00:00:000') AS DateTime) AND GETDATE()
mada slobodno mozes i ovako:
WHERE DT > Cast((Left(GetDate(), 11) + ' 00:00:000') AS DateTime)
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Trenutno VREME u sql-u12.09.2008. u 13:43 - pre 190 meseci
Ako startujes istog dana u isto vreme onda mozes slobodno i da uzmes brze numericko resenje koje ne zavisi od parsiranja stringova:

WHERE DATEDIFF(day, DT, GETDATE()) = 0

a ako imas index na DT mozes i da ubrzas stvar sa

WHERE DT > CAST(DATEDIFF(day, 0, GETDATE()) as DATETIME)

oba resenja su cisto numericka, s tim sto je drugo resenje konstanta za query scope i omogucava brz scan tabele jer ce query optimizer to da provali.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Zidar
Canada

Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Trenutno VREME u sql-u15.09.2008. u 14:10 - pre 190 meseci
@Brankec:
mmix ti je dao dobar odgovor. I resenje koje je dao Branko_S verovatno bi radilo, ali nisam siguran da bi radilo za svaki regional setting.

Moguce je da nije bas najjasnije na prvi pogled sta se desava. Pogledaj ovo parce koda i bice ti jasnije kako se iz nekog datuma 'odesca' vremenska komponenta. Ima vise nacina da se odsece vrema ili podesi tacno vreme, pokazan je jedan od njih i nacin koji je dao mmix.

Code:

-- GetDate, datum  bez vremena, 9 sati na danasnji dan
SELECT 
[TrenutnioVreme]= Getdate() 
-- mmix nacin, veoma elegantan:
, [DanasnjiDatum_mmix] = CAST(DATEDIFF(day, 0, GETDATE()) as DATETIME)
, [DanasnjiDatum_9AM_mmix] = dateadd( hh, 9, CAST(DATEDIFF(day, 0, GETDATE()) as DATETIME))
-- jos jedan moguci nacin, manje elegantan, cisto da se setimo i fuknicje CONVERT:
, [DanasnjiDatumBezVremena] = CAST(CONVERT(varchar,Getdate() , 112) AS Datetime)
, [DanasnjiDatum_9AM] = dateadd( hh, 9, CAST(CONVERT(varchar,Getdate() , 112) AS Datetime))


Ako je ovo jasno, onda bi tvoj kod trebalo da izgleda nekako ovako, koristeci izraze koje je dao mmix (jer su kraci nego moji):

Code:

SELECT Radnik, DT FROM TvojaTabela
WHERE 
-- za danasnji dan:
CAST(DATEDIFF(day, 0, DT) as DATETIME) = CAST(DATEDIFF(day, 0, GETDATE()) as DATETIME)
-- ko se otkucao do 9 AM zakljucno:
AND DT<= dateadd( hh, 9, CAST(DATEDIFF(day, 0, GETDATE()) as DATETIME))


 
Odgovor na temu

[es] :: MS SQL :: Trenutno VREME u sql-u

[ Pregleda: 3441 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.