2010-08-28 6 views
0

Pour un champ de date donné (formaté en sql sous la forme: aaaa-mm-jj), je souhaite l'afficher en tant que numéro de semaine.Tentative d'obtention du champ de date de fin de mois

J'ai essayé de travailler avec date() mais cela n'a pas vraiment fonctionné.

champ SQL: AAAA-MM-JJ

sortie souhaitée: Semaine 12-2010

Est-ce que quelqu'un sait comment faire cela? Merci d'avance!!

+0

Qu'est-ce que vous essayez qui ne fonctionne pas? 'date()' fait exactement ce que vous voulez. –

+0

Yup, mais en quelque sorte (oui je sais, je me sens stupide) je ne pouvais pas obtenir le droit W-Y :) –

Répondre

0

Utilisez strtotime et date:

<?php 
$sqldate = "2010/08/28"; 

echo date("\W\e\e\k W - Y", strtotime($sqldate)); 
?> 
+0

thx! C'était si facile que je n'ai pas pu résister. J'ai oublié de mettre strtotime() dans ma propre expérience de date. THX! –

+0

De rien. – shamittomar

1

Si vous voulez simplement le faire dans MySQL, vous pouvez utiliser la fonction WEEK():

SELECT WEEK(date) as week, YEAR(date) as year FROM mytable 

Remarque, vous voudrez peut-être spécifier un numéro de mode pour WEEK() de dire MySQL quel jour de la semaine pour commencer sur. Par exemple. certains serveurs peuvent être configurés pour commencer des semaines le lundi, tandis que d'autres peuvent commencer le dimanche.

SELECT WEEK(date, 0) as week ... /* explicitly start weeks on Sundays */ 

Il y a aussi d'autres fonctions de numéro de semaine pour MySQL que vous pourriez vouloir vérifier, comme YEARWEEK(), qui renvoie le numéro de l'année + semaine (par exemple 201012):

http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html#function_week

+0

thx pour votre réponse! l'autre option était un peu plus simple, sans changer la requête sql. –

0

Essayez ceci:

$bits = explode("-", "2010-08-28"); 
echo date("W", mktime(0, 0, 0, $bits[1], $bits[2], $bits[0])); 
0

En PHP, vous pouvez essayer ceci:

echo date("\Week W - Y", date_parse($sql_date_from_db)) 
Questions connexes