SQL Query op datum

Status
Niet open voor verdere reacties.

2017Erik2017

Nieuwe gebruiker
Lid geworden
31 mei 2017
Berichten
2
Kan iemand mij helpen hoe ik uit een kolom met datums (INGANGDATUM) de datum het kortste bij vandaag, maar niet in de toekomst, filter?

Waarden in de tabel zijn bijvoorbeeld:
NAAMINGANGDATUM
Jan1-1-2015
Piet1-1-2015
Jan1-1-2016
Piet1-1-2016
Jan1-1-2017
Piet1-1-2017
Jan1-1-2018
Piet1-1-2018


Dan moet alleen geselecteerd worden:

NaamIngangsdatum
Jan1-1-2017
Piet1-1-2017

Dank, dank, dank!!
 
Dus je wilt de resultaten met een datum in de toekomst helemaal niet zien?


Where ingangsdatum <= GETDATE()
Order by ingangsdatum

Zoiets?
 
$year is variabele jaar
$month is variabele maand
dit is afkomstig php dit is niet uw oplossing maar met dit gegeven zou je de oplossing moeten zien vermoed ik .

Code:
WHERE  (YEAR(`from`)='$year' AND MONTH(`from`)='$month')||(YEAR(`to`)='$year' AND MONTH(`to`)='$month')
 
@kenikavanbis: Voor een pure SQL-vraag met een PHP oplossing komen is nogal afwijken van het onderwerp. Tenzij er een vermelding van PHP is kun je dit doen maar anders zien we graag dat je alleen een antwoord geeft in het gevraagde onderwerp.

@2017Erik2017: Vermoedelijk zul je een sub-query moeten gebruiken om de laatste datum voor vandaag bekend te hebben:
Gegeven met deze table:
[sql]
CREATE TABLE people (
naam VARCHAR(10),
ingangsdatum DATE
);

INSERT INTO people VALUES
('Jan', '2015-01-01'),
('Piet', '2015-01-01'),
('Jan', '2016-01-01'),
('Piet', '2016-01-01'),
('Jan', '2017-01-01'),
('Piet', '2017-01-01'),
('Jan', '2018-01-01'),
('Piet', '2018-01-01')
;[/sql]

Kun je met deze query het resultaat halen:
[sql]
SELECT
*, NOW()
FROM
people
WHERE
ingangsdatum <= NOW()
AND
ingangsdatum = (
SELECT
ingangsdatum
FROM
people
WHERE
ingangsdatum <= NOW()
ORDER BY
ingangsdatum DESC
LIMIT 1
)[/sql]

Zie: http://sqlfiddle.com/#!9/e12e93/7
 
Laatst bewerkt:
@The Devil: je voorbeeld doet niet wat de TS vraagt (gezien deze resultaten uit 2015 toont). Wat wel werkt is bijvoorbeeld:

SELECT * FROM people WHERE ingangsdatum = (SELECT MAX(ingangsdatum) FROM people WHERE ingangsdatum < NOW())
 
Allen dank voor jullie reacties!!!


Onderstaand is wat mij uitkomst heeft geboden. Nogmaals dank!

@The Devil: je voorbeeld doet niet wat de TS vraagt (gezien deze resultaten uit 2015 toont). Wat wel werkt is bijvoorbeeld:

SELECT * FROM people WHERE ingangsdatum = (SELECT MAX(ingangsdatum) FROM people WHERE ingangsdatum < NOW())
 
@CoD_NL: Je hebt gelijk, heb mij verkeken op het resultaat uit de NOW(). Was even vergeten dat hij standaard ASC sorteert maar dat moet natuurlijk DESC zijn.

Gelukkig heeft de TS nu twee opties ;)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan