Hlavnß strßnka · DiskusnΘ F≤rum · PracovnΘ prφle₧itosti · Zoznam

 Main Menu
o Hlavnß strßnka
o Zoznam tΘm
o Zoznam
o OdporuΦte nßs
o U₧φvatelia
o VaÜe konto
o Pridaj Φlßnok
o ètatistiky
o Top 10

 Reklama


 Developer Zone's
o Internet
o Tools
o Linux
o CGI Zone
o ASP Zone
o ASP.net
o PHP Zone
o CSS Zone
o JavaScript
o MySQL
o WAP / WML
o WML / WMLScript
o XML / XHTML
o Tipy a triky
o Best of web
o WebServers
o WebDesign
o Grafika

 Servis
o Vyh╛adßvanie
o F≤rum
o Workoffice
o Zoznam Φlßnkov
o Reklama
o Pridaj Φlßnok
o Pridaj novinku

NapφÜte nßm
Homepage Do favoritov

 LinkExpres
Interval.cz · Pc.sk
Builder.cz · Mobilmania
PCSvet.cz · Asp.cz
Webdnes · Äiv∞.sk
Zoznam.sk · Atlas.sk
Inzine.sk · PHP.sk
Agent.sk · Lupa.cz
Code.box.sk · Root.cz
Pixel32 · Grafika.cz

 forum.developer.sk
o F≤rum ::
o Markup languages
o ScriptovΘ jazyky
o CGI
o PHP/MySQL
o Perl
o Grafika
o Webservery
o HTML Editory
o Browsery
o Bookmarx
o ASP
o Vytvor tΘmu ::

 PracovnΘ prφle₧itosti
o Pon·kate prßcu?
o H╛adßte prßcu?

 Autori developer.sk
o Martin NemeΦek
o SvΣ¥o Straka
o Jany Masaryk
o Jozef Murφn

 
Tipy a Triky [ 26. May 2000] - Jany_Masaryk
DßtovΘ funkcie a prßca s nimi v ASP strßnkach a MS SQLServer
Tento tip vznikol na zßklade otßzok nßÜho Φitate╛a: Robφm databßzu v SQLserver7.0. Chcem pou₧φva¥ dßtum ako kritΘrium zobrazovania ·dajov z tabu╛ky. Mßm stσpec s menom Datum a do neho zapisujem cez ASP dßtum funkciou Date(). Dßtum v tomto stσpci je vo formßte 4.4.2000. Potrebujem napφsa¥ ASP, ktorΘ mi pod╛a t²chto dßtumov bude zobrazovat ·daje z celej tabu╛ky.



ProblΘm zaΦφna tu : Ja to potrebujem tak, aby mi ukazoval ·daje, ktorΘ su X dni starΘ, teda vÜetky od (dneÜn² dßtum - X) vΣΦÜie. Ke∩ napφÜem do ASP ₧e

	Select * from tab_name where Datum >= Date() - X
	

tak proste mi vyhodφ nejak· chybu. VieÜ mi please poradi¥ presn· syntax, ₧e ako to dosiahnem?

RieÜenie 1 :

Tak₧e rieÜenφ je nieko╛ko, ale popφÜem iba jedno. Predpokladajme, ₧e mßme nasledovn· tabu╛ku News :

Nßzov stσpca Typ hodn⌠t
News_ID int (priΦom je tento atrib·t zßrove≥ primßrnym kσ·Φom a tie₧ "identity")
News_Title varchar(50)
News_Date datetime

Z danej tabu╛ky chceme zobrazova¥ polo₧ky, ktorΘ s· X dnφ starΘ. Dole₧itΘ je si uvedomi¥, ₧e oddelenie logiky funkΦnej od logiky databßzovej je pomerne podstatnß vec, ktorß naprφklad umo₧≥uje meni¥ databßzov² server bez nutnosti zasahova¥ do ASP strßnok. Upravφ sa len databazovß Φas¥. To znamenß, neodpor·Φa sa "na tvrdo" pφsa¥ SQL prφkaz do ASP strßnky. Miesto toho zostavφme ulo₧en· proced·ru. Ked₧e otßzka je kladenß na SQL Server tu je prφklad proced·ry uplatnenej na tabulku News :

	Set Dateformat dmy
	CREATE PROCEDURE Xnew
	@days int
	AS
	SELECT News_ID, News_Title, News_Date
	FROM News
	WHERE (DATEDIFF(dd, News_Date, getdate()) <= @days) AND (DATEDIFF(dd, News_Date, getdate()) > -1)
	ORDER BY News_Date DESC
    

priΦom proced·ru volßme z ASP strßnky pomocou prφkazu strSQL, kde X je poΦet dnφ teda integer Φφslo :

	strSQL = "EXECUTE Xnew @days=" & X
	

T²m dostaneme sprßvy starΘ X dnφ. Prv² prφkaz nastavφ ak² bude dßtumov² formßt v databßze. Parameter sa zostavφ pomocou y(year), m(month) a d(day). ZvyÜok je klasickΘ zostavenie proced·ry. Za zmienku stojφ prφkaz DATEDIFF. Bli₧Üie v preh╛ade Φφslo 2 dole ... ZφskanΘ v²sledku u₧ iba naplnφme do Recordsetu a m⌠₧eme ich ∩a╛ej pou₧i¥.

ProblΘm 2 :
EÜte ∩a╛Üia vec: Neviem, ₧e v akom formßte mßm ma¥ ten dßtumov² stσpec. Mßm ho ako Datetime momentßlne. ╚φtal som vÜak, ze tieto dßtumovΘ zßle₧itosti s· dos¥ citlivΘ na formßt dßtumu. Ten sa dß nejak nastavi¥, zmeni¥, urΦi¥? Ale ke∩ predsa pou₧φvam serverov² dßtum ako na zßpis tak aj na Φφtanie z databßzy, malo by to by¥, jedno, nie?

RieÜenie 2 :
Tento problΘm poznßm. NajlepÜie je nastavi¥ si v databßze jeden formßt pomocou prφkazu :

	Set Dateformat dmy
	

a v ASP strßnkach u₧ iba upravova¥ dßtum pomocou VBScriptov²ch funkciφ, ktor²ch preh╛ad je ni₧Üie.

Preh╛ad 1.
Preh╛ad u₧itoΦn²ch dßtumovo-Φasov²ch funkciφ vo VBScripte :

DßtovΘ funkcie VBScriptu
Funkcia Syntax Ukß₧ka
Now()   11.4.2000 17:20:26
Time()   17:20:26
Date()   11.4.2000
Day() Day(dßtum) 11
Month() Month(dßtum) 4
Year() Year(dßtum) 2000
Hour() Hour(Φas) 17
Minute() Minute(Φas) 20
Second() Second(Φas) 26
Weekday() Weekday(dßtum,[prv² de≥ t²₧d≥a]) napr.: Weekday(Date(),Monday) 2

Preh╛ad 2.
Preh╛ad dßtumov²ch a Φasov²ch funkciφ v T-SQL.

DßtovΘ funkcie T-SQL
Funkcia Parametre Ukß₧ka
DATENAME(datepart,date)
vyberie menu Φasti dßtumu
datepart - year, quarter, month, dayofyear, day, week, weekday, hour, minute, second, millisecond
date - dßtum
Select datename(month,getdate())
Result : April
DATEPART(datepart,date)
vyberie Φas¥ dßtumu
datepart - year, quarter, month, dayofyear, day, week, weekday, hour, minute, second, millisecond
date - dßtum
Select datepart(day,getdate())
Result : 11
DATEADD(datepart,number,date)
vracia nov· dßtumov· hodnotu vypoΦφtan· na zßklade pridanΘho intervalu ÜpecifikovanΘho dßtumu
datepart - year, quarter, month, dayofyear, day, week, weekday, hour, minute, second, millisecond
number - o ko╛ko sa mß zv²Üi¥ danß hodnota
date - dßtum
Select dateadd(day,5,getdate())
Result : 2000-04-16 17:07:40.437
DATEDIFF(datepart, startdate, enddate)
vracia Φφslo vychßdzaj·ce z porovnania dvoch dßtumov resp. Φasov pomocou parametra datepart
datepart - year, quarter, month, dayofyear, day, week, weekday, hour, minute, second, millisecond
startdate - zaΦiatok kalkulßcie
enddate - koniec kalkulßcie
Select datediff(day,'04.04.2000',getdate())
Result : 7


 
 PrφsluÜnΘ odkazy k tΘme
Viac o tΘme: Tipy a Triky | InΘ Φlßnky od: Admin | PoÜli komentßr | Strßnka vhodnß na tlaΦ width=15 height=11  PoÜli tento Φlßnok priate╛ovi, znßmemu width=15 height=11


NajΦφtanejÜie Φlßnky Tipy a Triky:
JavasScript: Blokovanie prφstupu na strßnku v zßvislosti od IP adresy

╧alÜie Φlßnky v rubrike Tipy a Triky:

 

"DßtovΘ funkcie a prßca s nimi v ASP strßnkach a MS SQLServer" | Login / vytvor konto | 0 Komentßrov
Prah
Za obsah komentßrov je zodpovedn² u₧φvate╛, nie prevßdzkovate╛ t²chto strßnok.



AutorskΘ prßva: á ⌐1999 - 2001 Developer Zone [developer@developer.sk]

VÜetky Φlßnky s· vlastnφctvom autorov Developer Zone. VÜetky prßva vyhradenΘ. Strßnky Developer.sk s· vytvorenΘ pomocou PHP-Nuke.
Odkazy na novΘ Φlßnky je mo₧nΘ prebera¥ pomocou:Backend.php.