[mySQL] SQL current_date vergelijking met case/if statement

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Morphine
  • Registratie: Februari 2002
  • Laatst online: 09-09 19:45
Heren,

Ik ben bezig een view the maken van een contents tabel. In deze contents tabel heb ik 2 kolommen:
publishFrom en publishTo.

Een simpele query op de tabel om alleen de content te krijgen binnen de huidige datum is eenvoudig:
code:
1
select * from site_content where CURRENT_DATE BETWEEN publishFrom AND publishTo


Probleem is nu echter al, publishFrom en/of publishTo kunnen ook leeg zijn..

De query moet dus aan het volgende voldoen
  • if not null publishFrom and if not null publishTo then: where CURRENT_DATE BETWEEN publishFrom AND publishTo
  • if not null publishFrom and isnull(publishTo then:: where CURRENT_DATE>=publishFrom
  • if isnull(publishTo) and is not null(publishTo): where CURRENT_DATE<=publishTo
Hoe ga ik dit omvatten in een Query? Met de manual van mysql met de case en/of if statements kom ik er helaas niet uit :'(

(Deze hele query ga ik vervolgens in een view stoppen.. maar dat doet er nu niet echt toe)

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Gewoon iets als (a IS NULLl OR a >= X) AND (b IS NULL OR b <= Y) :?

{signature}


Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
of via isnull default datums meegeven (pseudocode):
code:
1
select * from site_content where CURRENT_DATE BETWEEN isnull(publishFrom,'1980-01-01') AND nvl(publishTo,'3000-01-01')

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • Morphine
  • Registratie: Februari 2002
  • Laatst online: 09-09 19:45
KabouterSuper schreef op donderdag 29 januari 2009 @ 17:23:
of via isnull default datums meegeven (pseudocode):
code:
1
select * from site_content where CURRENT_DATE BETWEEN isnull(publishFrom,'1980-01-01') AND nvl(publishTo,'3000-01-01')
Prachtig! In mysql is het overigens ifNull (in mssql is het issnull ;-)

Maar.. mijn dank is groot! _/-\o_

Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 22:06

BCC

Misschien wil je het dan niet gebruiken, omdat je nu database afhankelijkheid aan het introduceren bent.

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.