[Coldfusion] Datum functies

Pagina: 1
Acties:

  • Defspace
  • Registratie: Mei 2000
  • Laatst online: 27-08 11:17

Defspace

Administrator

Topicstarter
Ik zit een beetje met het volgende probleem.

Om datums in een datum/tijd veld te vullen maak ik gebruik van de functie CreateODBCDateTime. Maar die werkt niet naar behoren.

Waneer de input deze is:
<CFSET Datum = "03-06-2002 12:00:00">
<CFSET ODBCDatum = CreateODBCDateTime(Datum)>

Maakt hij van ODBCDatum:
{ts '2002-03-06 12:00:00'}

Als het is:
<CFSET Datum = "21-06-2002 12:00:00">
<CFSET ODBCDatum = CreateODBCDateTime(Datum)>

Maakt hij ervan:
{ts '2002-06-21 12:00:00'}

Nou doe ik dus b.v.
Select * from reacties where bla=bla and Datum=#ODBCDatum#

Maar ik kan niet doen:
<CFSET eigendatum = "{ts '2002-06-03 12:00:00'}">
Select * from reacties where bla=bla and Datum=#eigendatum#

Want dan maakt hij ervan:
Select * from reacties where bla=bla and Datum=ts '2002-06-03 12:00:00'}
(zonder { dus)

Maar wanneer ik een INSERT into gebruik met ODBCdatum dan zet hij hem wel volgens de juiste notatie in mijn DB.

Heel erg vaag dus allemaal. Wie o wie heeft hier ervaring mee ???

  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 13-05 14:52

Tsjipmanz

Der Rudi ist da

Je doet het te omslachtig, je moet je eigendatum ook maken met CreateODBCDateTime. Die ts is meer voor intern gebruik.

Dus iets als:
<CFSET eigendatum=CreateODBCDateTime("03-06-2002 12:00:00")>

en je selectquery werkt.

Succes

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -


  • Defspace
  • Registratie: Mei 2000
  • Laatst online: 27-08 11:17

Defspace

Administrator

Topicstarter
Dus iets als:
<CFSET eigendatum=CreateODBCDateTime("03-06-2002 12:00:00"
Jammergenoeg dus niet.

Die functie CreateODBCDateTime denkt zelf te weten welk veld de maand is en welke de dag.

In mijn DB wordt een datum als volgt opgeslagen:
3-6-2002 12:00:00

En met jouw eigendatum functie wordt hij in mijn DB dus ook opgeslagen als: 3-6-2002 12:00:00

Maar als ik met diezelfde variabele (eigendatum) hem nu uit de DB wil lezen (select) krijg ik een type mismatch.
Omdat hij denkt dat ik een veld zoek met de datum 06-03-2002

6 maart dus
i.p.v
3 juni

  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 13-05 14:52

Tsjipmanz

Der Rudi ist da

Dan is CreateDate(year,month,day) ook altijd nog een optie, mocht het niet noodzakelijk een ODBC-datum moeten zijn. Volgens mij kun je desnoods het resultaat van CreateDate gebruiken als argument voor CreateODBCDate, maar dat weet ik niet zeker.

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -


  • jochemd
  • Registratie: November 2000
  • Laatst online: 31-08 19:19
Op maandag 03 juni 2002 13:27 schreef Defspace het volgende:

Die functie CreateODBCDateTime denkt zelf te weten welk veld de maand is en welke de dag.

In mijn DB wordt een datum als volgt opgeslagen:
3-6-2002 12:00:00

En met jouw eigendatum functie wordt hij in mijn DB dus ook opgeslagen als: 3-6-2002 12:00:00
Als je ook even RTFM't dan zie je dat CreateODBCDateTime() een datumobject als parameter nodig heeft. Als jij er dan een string in stopt moet je niet gek opkijken als het verkeerd gaat |:(

De oplossing is dus om een datumobject te gebruiken dat je eerst maakt met CreateDate() (zoals hier al eerder is aangegeven).
Als je absoluut een string wil gebruiken zorg dan dat je die string volgens ISO 8601 formatteert. Dat is officieel niet correct, maar werkt wel.