[PHP+MSSQL]Datum in select probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • LiquidSmoke
  • Registratie: Maart 2001
  • Laatst online: 17-09 09:53
Ik heb niet veel verstand van mssql/php maar red me aardig, alleen zit ik nu even vast;

Ik heb een tabel welke een datum in een veld heeft, geformatteerd als 6/12/2008 9:00:00 AM.

Nu selecteer ik alles voor vandaag via een LIKE: (reservering.startdatumgepland LIKE 'Jun 12 2008%').

Werkt perfect, maar alleen als het nummer van de dag hoger is dan 10, bijvoorbeeld Jun 02 2008% of Jun 2 2008% doet niks, terwijl Jun 10 2008% en Jun 26 2008% bijvoorbeeld wel werken.

Het heeft iets te maken met een voorloopnul, maar ik kom er niet uit; Google verteld me niet veel, alleen dat mssql anders omgaat met datums dan MySQL...

Acties:
  • 0 Henk 'm!

  • PolarBear
  • Registratie: Februari 2001
  • Niet online
Wat voor datatype gebruik je voor het opslaan van de datum?

Acties:
  • 0 Henk 'm!

  • LiquidSmoke
  • Registratie: Maart 2001
  • Laatst online: 17-09 09:53
datatype is een standaard datetime (heb zelf de dbase niet opgezet, dus is standaard amerikaanse mm/dd/yyyy).

Vreemde is dat als ik Jun %2 2008% pak wel alles goed gaat, maar ik ook 12 en 22 te zien krijg...
Er zou dus een voorloop nul in moeten, maar vreemd genoeg werkt dit niet :?

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Gebruik een standaard aanwezig date functie om de datum te representeren zoals jij dat wil en vergelijk dat gewoon met = met een constante string. :)
En als het altijd tov vandaag/nu is, ben je al helemaal te moeilijk bezig. Bekijk iig de date/time functies nog maar eens.

{signature}


Acties:
  • 0 Henk 'm!

  • remmelt
  • Registratie: Januari 2001
  • Laatst online: 09-04 12:25
Dat is geen string maar een date time veld, zoals je zelf al aangeeft. Daar doe je dus ook geen LIKE op maar gebruik je de datumfuncties van mysql:

http://dev.mysql.com/doc/...e-and-time-functions.html

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:01
Een LIKE gebruik je voor strings, niet voor datums.

Je kan gewoon

code:
1
WHERE datumveld > getdate() - 1 AND datumveld <= getdate()

of

[code]
WHERE datepart(dayofyear, getdate()) == datepart(dayofyear, datumveld)[/]
deze zal wel wat minder zijn qua performance, want er zullen geen indexen kunnen gebruikt worden
doen.

edit: Hmm, bij die laatste zal je natuurlijk ook nog rekening moeten houden met het jaar enzo...
Dan blijft optie 1 voor mij toch nog de duidelijkste. :P

[ Voor 23% gewijzigd door whoami op 02-06-2008 12:03 ]

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • LiquidSmoke
  • Registratie: Maart 2001
  • Laatst online: 17-09 09:53
Inderdaad; ik ben nog wat op onderzoek uitgeweest en kwam het meer tegen...

Oplossing van whoami werkte!
Pagina: 1