[ASP/SQL] selectie met datum

Pagina: 1
Acties:

  • Pin0
  • Registratie: November 2002
  • Niet online
De volgende query wordt uitgevoerd:
SELECT Sum(aant_uren) AS som_aant_uren FROM tbl_gewerkte_uren WHERE gebruiker_id=1 AND project_id=2 AND datum >= #1-6-2004# AND datum <= #31-12-2005#

Toch word een item met als datum 1-4-2004 ook meegenomen Hoe kan dit?

Ik heb bovenstaande (oplossing met #) met de search gevonden ook vond ik oplossingen met BETWEEN die ik niet werkend kreeg.

Ik gebruik access als database.

Mijn Lego Mocs - LEGO idea: The Motorcycle Garage


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
- je kunt ipv < > beter between gebruiken...
- gebruik parameterized queries, dan heb je geen last meer van datum-conversie-problemen...

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

ik vermoed dat 1-6-2004 = -2009 en 31-12-2005 = -1986, dus dat 1-4-2004 = -2007 daar inderdaad tussen ligt :P

Volgens mij moet je icm acces (ook) enkele quotes om de datums heenzetten ;)

[ Voor 1% gewijzigd door j_du_pee op 05-10-2004 15:03 . Reden: rekenfoutje weggepoetst O-) ]

kaart != map && bottel != fles
Wacht op antwoord


  • Pin0
  • Registratie: November 2002
  • Niet online
SELECT Sum(aant_uren) AS som_aant_uren FROM tbl_gewerkte_uren WHERE gebruiker_id=1 AND project_id=2 AND datum BETWEEN #1-6-2004# AND #31-12-2005#

Geeft hetzelfde resultaat. Nog steeds word een record met datum 1-4-2004 gewoon meegenomen.

Ik heb gezocht naar dat 'parameterized queries' maar dat vind ik nog steeds wazig, kan ik deze query aanpassen zodat hij 'parameterized' is of moet ik dan mbv. access een query maken of zo?

Mijn Lego Mocs - LEGO idea: The Motorcycle Garage


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 20-05 08:06

sopsop

[v] [;,,;] [v]

Gezien problemen met verschillende tijdzones (server in de VS, Clients in nederland) ben ik al lang overgeschakeld op timestamps. Ik heb 1-1-1980 om 00:00:00 gekozen als absoluut nulpunt. Vervolgens heb ik een functionset gemaakt die de datum (en tijd) omzet in seconden na 1-1-1980 00:00:00 en het ook weer terug kan zetten.

Het rekenen met data wordt op deze manier zo ontzettend veel eenvoudiger, met name de queries worden onnoemelijk simpel.

Het is mischien iets om mee te nemen.

=edit=
http://kennisbank.brinkster.net/includes/dtc.txt
Dit is de functionset met alle bewerkingen, voordat je iets met de timestamps (DTC's) gaat doen, moet je eerst DTCinit aanroepen (pas daar ook nog wat varretjes aan zoals de session.lcid) en de TimeOffset-constante naar behoeve aanpassen (ik wijk 6 uur af van de servertijd).

De huidige datum naar DTC zetten: RealDate_to_DTC(now())
De huidige tijd naar DTC zetten: RealTime_to_DTC(now())
De huidige datum/tijd naar DTC omzetten: RealDateTime_to_DTC(now())
Van DTC naar tijd: DTC_to_RealTime([dtcparam])
Van DTC naar datum: DTC_to_Realdate([dtcparam])


En formatfunctie: DTCFormat([dtcparam],"mm-dd-yyyy")

[ Voor 42% gewijzigd door sopsop op 05-10-2004 16:31 ]


  • Pin0
  • Registratie: November 2002
  • Niet online
Het is voor een intranet met een Nederlandse access database en Nederlandse clients, dus ik dacht dat de datum overal dd-mm-jjjj zou zijn. Omdat ik met de between rare resultaten kreeg, heb ik in de query de datum waarmee vergeleken moets worden als mm-dd-jjjj geschreven waarna het wel werkte.

Werkt SQL dat altijd met de amerikaanse datum, of ligt dit aan de IIS die ik gebruik?

Ik weet het niet. Het is niet de oplossing maar het werkt nu en voor die paar (40) werknemers zal het voorlopig wel voldoen.

@boppert bedankt voor het aanbod, maar om voor één query jou functieset te gebruiken gaat me toch iets te ver...

Mijn Lego Mocs - LEGO idea: The Motorcycle Garage


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
in asp is het zo dat een datum in een ASP script de locale instelling van de server gebruikt.

Je kunt dit oplossen door een session.LCID te doen naar de instelling die de access database vraagt. Er zijn ook genoeg datum formatting functions om ervoor te zorgen dat je datum altijd in de juiste format naar de database word geschreven.

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • bgrr
  • Registratie: Oktober 2001
  • Niet online
Heb t zelfde probleem gehad met opslaan van datum in sql en access.

Ondanks een NL server, NL access DB, LCID enz enz blijft je tegen problemen aanlopen met datum in nl-notatie (dd-mm-jjj) zodra je in SQL iets gaat doen. Dit werkt altijd met mm-dd-yyyy

Ik heb dit toen opgelost door altijd met mm-dd-yyyy te gaan werken in de DB. Op t moment dat ik ergens een datum wil afbeelden op me scherm of dergelijke haal ik deze op met month(objRS(datum)), day(objRS(datum)) en year(objRS(datum)) en plak deze op de NL manier aan elkaar in een string of dergelijke.

functies van month e.a staan uitgelegd op http://www.w3schools.com/vbscript/vbscript_ref_functions.asp

[ Voor 3% gewijzigd door bgrr op 06-10-2004 09:39 ]


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 18-05 15:53

Jaspertje

Max & Milo.. lief

Wat je nog beter kan doen, is het volgende: "1-Sept-2003" Ik weet alleen niet of access dit aankan (SQL Server wel) daar moet je dan wel even een functie voor schrijven, maar op deze manier komt het, ongeacht de land instellingen wel goed in de database
Pagina: 1