Avatar billede hundevennen Nybegynder
26. november 2010 - 08:49 Der er 8 kommentarer og
1 løsning

Hjælp til ændring af datoformat

I min sql database er datoformatet yyyy-mm-dd.
jeg skal bruge en dagsdato.
Når jeg laver en dagsdato=date() for jeg formatet dd-mm-yy -
jeg skulle meget gerne ha lavet det om til

dagsdato=date() giver mig formatet yyyy-mm-dd?????????
Avatar billede hundevennen Nybegynder
26. november 2010 - 08:58 #1
Nå jeg tror jeg klarede den selv med dette

dag = day(date)
mdr= month(date)
aar= year(date)
strdato= date()
dagsdato = aar & "-" & mdr & "-" & dag
Avatar billede softspot Forsker
26. november 2010 - 10:46 #2
Alt efter hvad du skal opnå kan du evt. bruge SQL Server's egen indbyggede getdate() til at hente den aktuelle dato i selve forespørgslen.

Hvis du skal tjekke om en dato i et felt ligger indenfor den aktuelle dato, kan du gøre det ved at benytte datediff og getdate i kombination, f.eks.

SELECT * FROM Tabel WHERE DATEDIFF(day, datofeltet, GETDATE()) = 0

Denne burde hente alle rækker i tabellen Tabel, hvor datoen i datofeltet ligger indenfor dags dato.
Avatar billede hundevennen Nybegynder
29. november 2010 - 10:04 #3
Hej Softspot
Jeg forstår ikke helt hvad du mener med at checke en dato der ligger indenfor den aktuelle dato.
Det jeg skal bruge det til er en søgeformular, hvor man skal kunne indsætte et tidsrum og så finde det der er gældende.
en aktivitetskalender - hvor nogle af aktiviterne ikke kun er på en enkelt dag men gælder over en periode.
Avatar billede softspot Forsker
29. november 2010 - 12:01 #4
OK, hvis jeg forstår din opgave, så er det at få datoerne transporteret fra et tekstformat over til databasen i et datoformat, hvilket giver udfordringer i forbindelse med konvertering fra dansk til åmd-format.

Jeg vil i den forbindelse anbefale at du benytter parameteriserede forespørgsler, da formatet af data her bliver styret af ADO (forudsat du har en gyldig dato du kan sende ind til databasen på kaldetidspunktet).

Jeg har selv skrevet en artikel her på eksperten om parameterisering af forespørgsler i ADO og den kan du finde her: http://www.eksperten.dk/guide/1250

I korte træk kan du gøre således:

startdato = cdate(request.form("startdato"))
slutdato = cdate(request.form("slutdato"))
sql = "SELECT * FROM Tabel WHERE datofelt BETWEEN ? AND ?"
set cmd = Server.CreateObject("ADODB.Command")
set cmd.ActiveConnection = conn
cmd.CommandText = sql
cmd.CommandType = adCmdText
set rs = cmd.Execute(, array(startdato,slutdato))
' aflæs rækkerne, der ligger i intervallet, i rs

Conn-variablen er din forbindelse til databasen, som naturligvis skal være sat op på forhånd.

Du skal desuden have ADO-konstanterne defineret (evt. inkluderet) i siden, enten i form af en includefil, hvor disse er defineret, eller med METADATA, som beskrevet i min artikel. Jeg anbefaler METADATA-metoden i global.asa, hvis det er muligt, da du så ikke skal tænke mere på dette i resten af din webapplikation.
Avatar billede hundevennen Nybegynder
06. december 2010 - 13:09 #5
Hej Softspot

jeg har styr på forbindelser m.v. men ikke sqlsætningen.
sql = "SELECT * FROM Tabel WHERE datofelt BETWEEN ? AND ?"
giver mig kun hvad der er gældende mellem de to datoer, - ik? hva nu hvis jeg skal fange en periode der ligger både før og efter de 2 datoer i betweensætningen?
F.eks har jeg 2 gyldighedsperioder 010410 - 010411 og 251110 - 281110.
og skulle gerne fange dem begge i en søgning, hvis jeg søger på alt der er gyldigt mellem 011010 - 011210
Avatar billede hundevennen Nybegynder
06. december 2010 - 13:40 #6
Det er jo egentligt et helt nyt spm. læg lige et svar så opretter jeg et nyt spm på det sidste
Avatar billede softspot Forsker
06. december 2010 - 13:42 #7
Jeg er ikke helt sikker på hvad du skal opnå, men du kan sagtens kombinere en BETWEEN med en anden i en SQL-forespørgsel. Du kan f.eks. godt skrive:

startdato = cdate(request.form("startdato"))
slutdato = cdate(request.form("slutdato"))
sql = "SELECT * FROM tabel WHERE datofelt BETWEEN ? AND ? OR datofelt BETWEEN ? AND ?"
set cmd = Server.CreateObject("ADODB.Command")
set cmd.ActiveConnection = conn
cmd.CommandText = sql
cmd.CommandType = adCmdText
set rs = cmd.Execute(, array(startdato,slutdato,startdato,slutdato))
' aflæs rækkerne, der ligger i intervallet, i rs

Bemærk at samme variable sagtens kan sendes med til forespørgslen flere gange, sålænge variablerne sendes i den rækkefølge parametrene forekommer i SQL-sætningen.
Avatar billede hundevennen Nybegynder
07. december 2010 - 14:41 #8
softspot

har fået styr på det - læg et svar og tak for hjælpen
Avatar billede softspot Forsker
07. december 2010 - 14:46 #9
Velbekomme :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester