Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[mySQL] SQL current_date vergelijking met case/if statement

Pagina: 1
Acties:

  • Morphine
  • Registratie: Februari 2002
  • Laatst online: 24-09 22:12
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)

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

{signature}


  • 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


  • Morphine
  • Registratie: Februari 2002
  • Laatst online: 24-09 22:12
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_

  • BCC
  • Registratie: Juli 2000
  • Nu online

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.