Toon posts:

[ASP] Probleempje met datums

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo, ik ben bezig met een dagboek te maken. De systeemdatum van de server moet in een variabele worden gedrukt en deze moet later worden gebruikt om een SQL vraag uit te voeren. Alleen dit werkt niet.. En volgens mij komt het omdat ik in de variabele datum geen datum kan opslaan.

Dim datum
datum = Date()

SQL_STRING = "SELECT * FROM dagboek WHERE datum =' & date & '"

Owja, in de database staat een textfield waar b.v. in staat '16-12-02'

[ Voor 13% gewijzigd door Verwijderd op 16-12-2002 13:05 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 16 December 2002 @ 13:04:
Hallo, ik ben bezig met een dagboek te maken. De systeemdatum van de server moet in een variabele worden gedrukt en deze moet later worden gebruikt om een SQL vraag uit te voeren. Alleen dit werkt niet.. En volgens mij komt het omdat ik in de variabele datum geen datum kan opslaan.

Dim datum
datum = Date()

SQL_STRING = "SELECT * FROM dagboek WHERE datum =' & date & '"

Owja, in de database staat een textfield waar b.v. in staat '16-12-02'
Drie vragen:

1. Waarom gebruik je een tekstveld voor je datum? daar hebben ze datetime voor uitgevonden...

2. Waarom laat je je database niet de huidige datum pakken (getdate(), now(), whatever)

3. Doe eens: Response.Write(datum) en zoek de verschillen met de 'datum' in je database....

[ Voor 5% gewijzigd door gorgi_19 op 16-12-2002 13:09 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

SQL verwacht zijn datum in een bepaald standaard formaat. Door Date() te gebruiken wordt de datum in jouw landsinstellingen weergegeven wat niet per definitie het jusite formaat voor SQL is.

Ik doe dit meestal zo:
code:
1
SQL_STRING = "SELECT * FROM dagboek WHERE datum =' & Year(date) & Month(date) & Day(date) & "';"


Maar inderdaad moet ik Gorgi gelijk geven dat je beter in SQL automatisch de datum kan laten genereren. Dan heb je er in je code geen omkijken meer naar...

:7

[ Voor 25% gewijzigd door Verwijderd op 16-12-2002 13:11 ]


Verwijderd

Topicstarter
Nou, het probeem is dus dat ik op vakantie ga. Mensen die mijn site gaan bezoeken kunnen dag voor dag bekijken wat ik aan het doen ben. Ik zal eerst eens even proberen om de textfield om te zetten in een datumfield.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 16 December 2002 @ 13:10:
SQL verwacht zijn datum in een bepaald standaard formaat. Door Date() te gebruiken wordt de datum in jouw landsinstellingen weergegeven wat niet per definitie het jusite formaat voor SQL is.
Wat je weer kan afdwingen door # te gebruiken in je statement...
Ik doe dit meestal zo:
code:
1
SQL_STRING = "SELECT * FROM dagboek WHERE datum =' & Year(date) & Month(date) & Day(date) & "';"

:7
Kan op zicht, maar dan kan je net zo goed doen:
code:
1
SQL_STRING = "SELECT * FROM dagboek WHERE datum =now()"

(in het geval van Access)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Als je dat doet (omzetten), houd er dan ook rekening mee dat in een SQL-statement hekjes (#) rond de waarde voor een datumveld moeten staan.
Wat betreft de format kun je dat ook in een actie vangen: Format(date(), "yyyy-mm-dd") of de parameters andersom, dat weet ik zo ff niet meer...

My personal website


Verwijderd

Topicstarter
Met Now() krijg je ook de tijd er bij. En dat staat niet in de textveld, dus die kun je zo niet vergelijken met Date() krijg je dus alleen de datum

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 16 December 2002 @ 13:14:
Met Now() krijg je ook de tijd er bij. En dat staat niet in de textveld, dus die kun je zo niet vergelijken met Date() krijg je dus alleen de datum
8)7 ff vergeten.. Ik wist dat er iets mee was..... En er was ook wel een oplossing voor.... (welke ik alleen weer vergeten was..) |:(

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Maar dat wou ik eigenlijk ook doen gewoon lekker makkelijk. Dat is duz deze string:

SQL_STRING = "SELECT * FROM dagboek WHERE datum = date()"

Maar dit werkt niet, hij kan dan niet het juiste datum veld er uit zoeken.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 16 december 2002 @ 13:18:
Maar dat wou ik eigenlijk ook doen gewoon lekker makkelijk. Dat is duz deze string:

SQL_STRING = "SELECT * FROM dagboek WHERE datum = date()"

Maar dit werkt niet, hij kan dan niet het juiste datum veld er uit zoeken.
Bij mij doet ie het wel.. :+
Heb getest met MS Access; gebruik je deze toevallig ook?
datumveld van type date/time, als format Short Date gekozen

[ Voor 9% gewijzigd door gorgi_19 op 16-12-2002 13:25 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Ja.. ik gebruik MS Access XP..

Wat heb je dan precies in de datum veld van de databese ingevuld? 16-12-02 ??

[ Voor 58% gewijzigd door Verwijderd op 16-12-2002 13:25 ]


Verwijderd

Topicstarter
Ok.. hij doet het.. na het veranderen van het textveld in datum/tijd korte datumnotatie.. Bedankt!

Verwijderd

ehhh waarom heb je niet gewoon # om de data heen gegooid..!?

wel er voro zorgen dat je ook een datum veld in access gebruikt... is verreweg makkelijkst..

Verwijderd

Alleen in een meerdere server-situatie (waar je niet volledige controle hebt over beide servers):

als je met ## werkt en je hebt toevallig een andere datumnotatie op je test-server staan als op je live-server, kun je een best vervelend probleem krijgen.
Je data worden dan dan per definitie omgezet naar de notatie die de database gebruikt, dat is fijn voor:
31-12-2002 (altijd 31 december 2002) naar 12-31-2002 in de database
maar
1-2-2002 (nederlands: 1 feb 2002) kan zo ongeconverteerd in de database worden geschreven, en wordt dus 2 januari 2002

Hierom moet je goed rekening houden met wat voor notatie eventuele beide servers aanleveren. Om alleen een soort van 'nu' in je database te zetten is het beste dit inderdaad al in SQL te doen....maar een 'over 8 dagen, 2 uur en 3 seconden' wordt al wat irritanter.

Verwijderd

Verwijderd schreef op 16 december 2002 @ 13:10:
Nou, het probeem is dus dat ik op vakantie ga. Mensen die mijn site gaan bezoeken kunnen dag voor dag bekijken wat ik aan het doen ben. Ik zal eerst eens even proberen om de textfield om te zetten in een datumfield.
Leuk! Dat heb ik ook gedaan, was best wel een succes.

Als je nu kijkt zie je alle dagen staan, maar tijdens de vakantie stond er alleen maar de dag die ik dan aan het doen was. www21.brinkster.com/jeroenarends
Pagina: 1