sql >> Databasteknik >  >> RDS >> Mysql

PHP date('W') vs MySQL YEARWEEK(nu())

Du måste ange läge 3 på mysql YEARWEEK-anropet:

SELECT YEARWEEK(now(),3); 

PHP date() platshållare W returnerar veckonummer enligt ISO 8601-specifikationen . Det betyder att veckorna börjar på måndag (inte söndag), den första veckan på året är nummer 1 (inte 0), och den veckan är den första som har mer än hälften av sina dagar på det nya året (så det måste vara januari senast på torsdag). Enligt dokumentationen för MySQL WEEK-funktion , den kombinationen av alternativ är läge 3.

Dessutom, för att dra in Alles anteckning i det accepterade svaret eftersom det är viktigt:platshållarna Y och W gå inte tillsammans. Om du vill ha årtalet som följer med ISO-veckanumret bör du använda o istället för Y . Tänk till exempel på veckan som börjar måndagen den 29 december 2014:

date('YW', mktime(0,0,0,12,29,2014));  #=> 201401 : 1st week of 2014??
date('oW', mktime(0,0,0,12,29,2014));  #=> 201501 : better


  1. Vad är rad-, sid- och tabelllås? Och när de förvärvas?

  2. Säkerhetskopiera MySQL-användare

  3. Uppdateringar av JSON-fältet kvarstår inte i DB

  4. Anropar en annan PL/SQL-procedur inom en procedur