[ASP / Access] Raar probleem met Datum

Pagina: 1
Acties:

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 09-08 00:05
Ik heb in een access database een veld "emailschedule_date" deze is van het type Date/Time --> Short Date.

Vervolgens heb ik in ASP/VBScript een query:
ASP:
1
Query = "SELECT * FROM emailschedule WHERE emailschedule_date = #" & Date() & "# AND emailschedule_timesection = " & runperiod & " AND emailschedule_status = 0"


In de database heb ik een record waar dit veld als waarde 5/11/2003 heeft, dat is dus vandaag.
Als ik vervolgens via ASP onderstaande Query uitvoer (variable zijn hier al geparsed):
SQL:
1
SELECT * FROM emailschedule WHERE emailschedule_date = #5/11/2003# AND emailschedule_timesection = 2 AND emailschedule_status = 0 


Dat geeft hij geen recordset terug, dus geen resultaat, terwijl de DATUM in de database gewoon staat op 5/11/2003.
Als ik in de database er 11/5/2003 van maak werkt het wel.

Echter heb ik in de systeem instellingen het datum formaat als: d/M/yyyy
Ook als ik een datum heb die andersom niet kan, bijv: 13/12/2003 werkt het ook goed. Hij draait dus voor data voor de 13e de dag en maand om.

Iemand die kan helpen?? _/-\o_ _/-\o_

P.S: Het is ook altijd hetzelfde gelazer met Datum/tijd etc.. :r

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

Wat in SQL server werkt (in access weet ik niet) Is om het als dd/Sept/yyyy te schrijven

Jan, Feb, Mar

moet alleen f de goede afkortinhen zoeken.. dan pakt ie altijd de goede iig

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 09-08 00:05
Jaspertje schreef op 05 november 2003 @ 13:56:
Wat in SQL server werkt (in access weet ik niet) Is om het als dd/Sept/yyyy te schrijven

Jan, Feb, Mar

moet alleen f de goede afkortinhen zoeken.. dan pakt ie altijd de goede iig
Dat werkt ook niet, als ik het in de database zo verander + data type
en dan in de ASP code vergelijken met Date() krijg ik geen resultaat...

  • CmdrKeen
  • Registratie: Augustus 2000
  • Laatst online: 27-05 21:11

CmdrKeen

Krentenboltosti

Heb je je system locale (session.lcid) goed staan?

Schrijf bv. eens dit bovenaan je code:
code:
1
session.lcid=1043


En kijk nog eens goed naar wat Jaspertje zegt..

[ Voor 17% gewijzigd door CmdrKeen op 05-11-2003 14:16 ]

Bloed, zweet & koffie


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 09-08 00:05
Vilenin schreef op 05 november 2003 @ 14:16:
Heb je je system locale (session.lcid) goed staan?

Schrijf bv. eens dit bovenaan je code:
code:
1
session.lcid=1043


En kijk nog eens goed naar wat Jaspertje zegt..
Nee, helpt ook niet. Dat heb ik al vaker geprobeerd, het vreemde is dat die oplossing nooit werkt..

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
<zucht> :P

Alweer roep ik: Gebruik de ISO notering!
yyyymmdd hh:nn:ss
of
yyyymmdd

Dat moet werken *Met SQL server iig wel, wat MSAccess doet weet ik eigenlijk niet.
[rml]RobIII in "[ ASP & SQL] Opslaan en lezen van datum g..."[/rml]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • CmdrKeen
  • Registratie: Augustus 2000
  • Laatst online: 27-05 21:11

CmdrKeen

Krentenboltosti

Urk, kan je misschien iets specifieker zijn dan "het werkt niet"?

edit/ Hmm je bedoelt natuurlijk dat je weer een lege recordset terugkrijgt.

Ok, umm, als je die laatste twee AND's eens weglaat, krijg je dan wél een recordset terug?

En je kan altijd omgekeerd-geldige datums invullen in Access. Als het formaat mm/dd/jjjj is en jij voert 13/4/1970 in, dan werkt dat gewoon. Dat zegt dus niets.

En om met RobIII te spreken: [rml]Vilenin in "[ ASP / SQL] Tijd opslaan in 24 uurs nota..."[/rml] ;)

[ Voor 87% gewijzigd door CmdrKeen op 05-11-2003 14:36 ]

Bloed, zweet & koffie


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
* faabman zit moeilijk na te denken over de query van de TS en ziet dan dat deze gebruik maakt van een Date() die NIET DOOR HET DBMS WORDT AANGEMAAKT

doe nou eens gewoon

code:
1
"WHERE emailschedule_date=Date()"

[ Voor 21% gewijzigd door faabman op 05-11-2003 14:40 ]

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


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Tja, dat datums intern allemaal hetzelfde worden opgeslagen is (IMHO) wieders. Het gaat er alleen om dat (b.v.) in queries altijd het eeuwige ge-emmer ontstaat over landinstellingen (dd/mm/yyyy of mm/dd/yyyy of dd-mm-yy enzovoorts). Zolang je gewoon de ISO notatie gebruikt heb je dat probleem nooit (en hoef je ook niet te gaan prutsen in je landinstellingen e.d.)

Of doelde je daar niet op ? :P

Dus

SQL:
1
2
SELECT * FROM emailschedule WHERE emailschedule_date = #5/11/2003#
   AND emailschedule_timesection = 2 AND emailschedule_status = 0 


Wordt

SQL:
1
2
SELECT * FROM emailschedule WHERE emailschedule_date = #20031105#
   AND emailschedule_timesection = 2 AND emailschedule_status = 0 


Weet overigens niet hoe Access dat precies oppakt (zie mijn eerdere disclaimer). Misschien moeten die # weg (of misschien wel een ander teken als ^ ofzo ? ). MsSQL server vreet het iig als volgt:

SQL:
1
2
SELECT * FROM emailschedule WHERE emailschedule_date = '20031105'
   AND emailschedule_timesection = 2 AND emailschedule_status = 0 

[ Voor 38% gewijzigd door RobIII op 05-11-2003 15:21 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • CmdrKeen
  • Registratie: Augustus 2000
  • Laatst online: 27-05 21:11

CmdrKeen

Krentenboltosti

Acces wil #datum#.

Ik gebruik voor datums deze functie, dan gaat het altijd goed:
* geript van 4GuysFromRolla.com
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Function MediumDate (str)
    Dim aDay
    Dim aMonth
    Dim aYear

    aDay = Day(str)
    aMonth = MonthName(Month(str),True)

    IF aMonth = "mrt" THEN
        aMonth = "mar"
    END IF
    IF aMonth = "mei" THEN
        aMonth = "may"
    END IF
    IF aMonth = "okt" THEN
        aMonth = "oct"
    END IF

    aYear = Year(str)

    MediumDate = aDay & "-" & aMonth & "-" & aYear
End Function

Bloed, zweet & koffie


Verwijderd

RobIII schreef op 05 november 2003 @ 15:06:
Weet overigens niet hoe Access dat precies oppakt (zie mijn eerdere disclaimer). Misschien moeten die # weg (of misschien wel een ander teken als ^ ofzo ? ). MsSQL server vreet het iig als volgt:
In access moet je idd die # gebruiken
TS zou je abu een paar enters in je sql queries willen zetten?

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 09-08 00:05
RobIII schreef op 05 november 2003 @ 15:06:
[...]

Tja, dat datums intern allemaal hetzelfde worden opgeslagen is (IMHO) wieders. Het gaat er alleen om dat (b.v.) in queries altijd het eeuwige ge-emmer ontstaat over landinstellingen (dd/mm/yyyy of mm/dd/yyyy of dd-mm-yy enzovoorts). Zolang je gewoon de ISO notatie gebruikt heb je dat probleem nooit (en hoef je ook niet te gaan prutsen in je landinstellingen e.d.)

Of doelde je daar niet op ? :P

Dus

SQL:
1
2
SELECT * FROM emailschedule WHERE emailschedule_date = #5/11/2003# AND
 emailschedule_timesection = 2 AND emailschedule_status = 0 


Wordt

SQL:
1
2
SELECT * FROM emailschedule WHERE emailschedule_date = #20031105# AND
 emailschedule_timesection = 2 AND emailschedule_status = 0 


Weet overigens niet hoe Access dat precies oppakt (zie mijn eerdere disclaimer). Misschien moeten die # weg (of misschien wel een ander teken als ^ ofzo ? ). MsSQL server vreet het iig als volgt:

SQL:
1
2
SELECT * FROM emailschedule WHERE emailschedule_date = '20031105' AND
 emailschedule_timesection = 2 AND emailschedule_status = 0 
OK, thanks! Nu heb ik dit -->

SQL:
1
2
SELECT * FROM emailschedule WHERE emailschedule_date = #2003115# AND
 emailschedule_timesection = 2 AND emailschedule_status = 0 

Mag de dag gewoon zonder leader zero?
Dit werkt helaas nog niet, maar komt dat door hoe het nu in de database staat?
Daar staat het gewoon nog als 5/11/2003

:?

[ Voor 3% gewijzigd door Urk op 05-11-2003 15:23 . Reden: datum foutje ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je moet wel voorloopnullen gebruiken ja. Bekijk anders deze post effe voor een handige (ASP) functie die dat voor je doet.

En wil je een beetje voorzichtiger quoten en wat enters in je query gooien? De layout is nu helemaal f*cked up...

Je krijgt nu dus:
code:
1
Query = "... WHERE " & emailschedule_date = #" & Date2SQL(Date()) & "# AND..."


edit:

Mooi, nu ook je 1e post nog :P

[ Voor 27% gewijzigd door RobIII op 05-11-2003 15:26 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 09-08 00:05
RobIII schreef op 05 november 2003 @ 15:21:
Je moet wel voorloopnullen gebruiken ja. Bekijk anders deze post effe voor een handige (ASP) functie die dat voor je doet.

En wil je een beetje voorzichtiger quoten en wat enters in je query gooien? De layout is nu helemaal f*cked up...

Je krijgt nu dus:
code:
1
Query = "... WHERE " & emailschedule_date = #" & Date2SQL(Date()) & "# AND..."
Sorry, layout al gefixed.
ASP:
1
2
3
4
5
6
7
SELECT * FROM emailschedule WHERE emailschedule_date = #20031105# AND
 emailschedule_timesection = 2 AND emailschedule_status = 0
 
Microsoft JET Database Engine error '80040e07' 

Syntax error in date in query expression 'emailschedule_date = #20031105# AND
 emailschedule_timesection = 2 AND emailschedule_status = 0'. 


Echter, wat moet het formaat zijn in de Access database van dit veld, deze staat nu gewoon nog op Short Date! Als ik die dan wil veranderen in bijv: 20031105 dan accepteerd het DBMS (Database Management Systeem) dat niet.

[ Voor 4% gewijzigd door Urk op 05-11-2003 15:27 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Tja, dat moet ik toch echt even aan de MS Access experts hier over laten, ik gebruik Access (al jaren) niet (meer). Sorry.

offtopic:
Edit je je eerste post ook nog effe :P
En je laatste post vernuekt de layout ook nog een paar pixels :P

[ Voor 36% gewijzigd door RobIII op 05-11-2003 15:30 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • CmdrKeen
  • Registratie: Augustus 2000
  • Laatst online: 27-05 21:11

CmdrKeen

Krentenboltosti

Ja bedankt he.

Het maakt geen drol uit hoe het in Access genoteerd staat. Dit is slechts een representatie van de werkelijke waarde zoals ik hierboven al zei: [rml]Vilenin in "[ ASP / Access] Raar probleem met Datum"[/rml].

[ Voor 26% gewijzigd door CmdrKeen op 05-11-2003 15:35 ]

Bloed, zweet & koffie


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Vilenin schreef op 05 november 2003 @ 15:34:
Ja bedankt he.

Het maakt geen drol uit hoe het in Access genoteerd staat. Dit is slechts een representatie van de werkelijke waarde zoals ik hierboven al zei: [rml]Vilenin in "[ ASP / Access] Raar probleem met Datum"[/rml].
Uhm, sorry, maar volgens mij begrijpen we elkaar niet ofzo :?

De ISO notatie is alleen handig voor Queries enzo, dat zeg ik. Hoe het intern opgeslagen wordt zal me worst wezen (overigens is dat volgens mij in 8 bytes). Wat ik voor de TS dus probeer uit te leggen is dat 'ie het best deze notatie kan gebruiken omdat dat interpretatie problemen kan voorkomen. Wat is namelijk 1/2/2003 nu? 1 feb? of 2 Jan? (dd/mm of mm/dd). Met de ISO notering voorkom je deze problemen (die afhankelijk zijn van je landinstellingen; meer specifiek je date/time instellingen).

Dus waarom je steeds naar die reply verwijst ontgaat me gewoon effe...

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 13-01 07:19
Als je de datum tussen # tekens zet gebruikt access altijd maand-dag-jaar, als je de datum tussen ' of " zet gebruikt access de huidige systeem instellingen.
Pagina: 1