sql >> Database >  >> RDS >> Mysql

Herhaalde gebeurtenissen op de nde weekdag van elke maand

Hier is een mogelijk alternatief voor u. strtotime is krachtig, en de syntaxis bevat echt nuttige stukjes zoals uitgebreide relatieve tijd- en datumtekst .

U kunt het gebruiken om de eerste tot en met de N-de specifieke weekdagen van een specifieke maand te genereren door het formaat " of " te gebruiken. Hier is een voorbeeld met date_create om een ​​DateTime aan te roepen object, maar gewone oude strtotime werkt op dezelfde manier:

php > $d = date_create('Last Friday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Friday March 25 2011 00:00:00
php > $d = date_create('First Friday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Friday March 04 2011 00:00:00
php > $d = date_create('First Sunday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Sunday March 06 2011 00:00:00
php > $d = date_create('Fourth Sunday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Sunday March 27 2011 00:00:00
php > $d = date_create('Last Sunday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Sunday March 27 2011 00:00:00

Het zal ook de maand overlopen, als je om een ​​ongeldige vraagt:

php > $d = date_create('Ninth Sunday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Sunday May 01 2011 00:00:00

Merk op dat het alleen werkt met het volgnummer formulering. Je kunt helaas niet slagen voor "1e" of "3e".

Zodra u dit gebruikt om de juiste N-de weekdag te pakken, kunt u eenvoudig het aantal benodigde weekdagen toevoegen om over te slaan (7 voor een week, 14 voor twee, 21 voor drie, enz.) weken zijn verstreken. Nogmaals, strtotime te hulp, met behulp van het tweede argument om relatiefheid aan elkaar te koppelen:

php > echo date('l F d Y H:i:s', strtotime('+14 days', strtotime('First Thursday of March 2011')));
Thursday March 17 2011 00:00:00

(Mijn lokale exemplaar accepteerde ook '+14 days First Thursday of March 2011' , maar dat voelde een beetje raar.)



  1. Problemen oplossen Illegale mix van sorteringen fout in mysql

  2. mysql-gegevenstype om alleen maand en jaar op te slaan

  3. Hoe te controleren of een database bestaat in SQL Server?

  4. UNION- en LIMIT-bewerkingen combineren in MySQL-query