14. marts 2004 - 13:08Der er
16 kommentarer og 1 løsning
sammenligne datoer i en mssql db
Jeg har en dato der ligger som en attribut i basen, den skal sammenlignes med datetime.now og på det grundlag skal jeg finde ud af hvor mange dage der er imellem de to. Hvordan gør jeg nemmest det? Jeg har hentet den vha. et dataset, men dette er sikkert forkert.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
du skal bruge command.executescalar idet du som jeg kan forstaa kun er interesseret i en vaerdi. brug den sammen med ovenstaaende sql saetning og saa skulle det vaere perfekt :-)
Det er helt fint. der vil stadig vaere een row og en column med den rigtige vaerdi som scalar metoden vil returnere. om det er et tal eller string er ok idet scalar returnerer et object. efterfolgende kan den castes til f.eks int
days = new SqlDataAdapter("SELECT DATEDIFF(day, din-dato-i-tabellen, getdate()) AS no_of_days FROM din-tabel WHERE et-eller-andet-søgekriterie", myconnection)
Det første argument i DATEDIFF angiver, at det er antal dage, du vil have regnet ud.
hvis du kun oensker at returnere een vaerdi dvs f.eks SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days FROM titles where id = 1
saa vil din kode se saaledes ud: query = "SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days FROM titles where id = 1";
sqlcommand command = new sqlcommand(connection,query) object scalarvalue = command.executeScalar();
hvis du derimod forventer at returnere mere end een vaerdi saa vil din code see saaledes ud: query = "id, SELECT DATEDIFF(day, pubdate, getdate()) AS days FROM titles"; sqlcommand command = new sqlcommand(connection,query) sqlreader scalarvalues = command.executereader();
if (scalarvalus.hasrows) { while (scalarvalues.read()) { dosomething(scalarvalues[0],scalarvalues[1]) } }
okay jeg kigger på det om lidt. Det jeg skal lave er en farvekode i et datagrid. hvis antaldage er <30 skal cellen være grøn, 30-60 dage = gul og >60 = rød
rasmusbg>vil du tjene nogle flere points? du får 50 pts for at forklare mig hvordan jeg kan komme til at arbejde med resultatet af datediffen. Jeg får fint nok beregnet dagene mellem de to datoer, men jeg mangler lige at lave cellen i datagrid'et grøn hvis tallet er under 30 osv. Jeg troede ellers at jeg kunne trække resultatet ud af datasettet men det ser ikke ud til at kunne lade sig gøre.
Icecoder> Kan du ikke lige poste et svar så du kan få dine velfortjente pts?
Dim myConnection As SqlConnection Dim myCommand As SqlDataAdapter myConnection = New SqlConnection("SERVER=WIN\db;database=db;uid=USER1; pwd=1234;") myCommand = New SqlDataAdapter("SELECT Cust_Name, MS_SQL_ID, DB_SW_TYPE, DB_Patch_Level, DATEDIFF(day, Patchtime, getdate()) AS Status FROM MS_SQL ORDER BY Cust_Name", myConnection) Dim ds As DataSet = New DataSet myCommand.Fill(ds) DataGrid1.DataSource = ds DataGrid1.DataBind()
Jdavid > Jeg kan desværre ikke hjælpe dig. Jeg har nemlig ikke erfaring med at kode ASP. Hvis Icecoder skal ha nogle point, så bliver du nødt til at oprette en nyt spørgsmål, Han kan nemlig ikke svare på dette, da der allerede er et accepteret svar. Jeg er sikker på, Icecoder kan hjælpe dig med at få den celle farvet grøn. Håber det lykkes for dig :o)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.