【问题标题】:Trying to get week number out of date field试图让周数超出日期字段
【发布时间】:2010-08-28 12:44:20
【问题描述】:

对于给定的日期字段(在 sql 中格式为:yyyy-mm-dd),我想将其输出为周数。

我尝试使用 date(),但并没有真正奏效。

SQL 字段:YYYY-MM-DD

预期产出:第 12 周 - 2010 年

有人知道怎么做吗?提前谢谢!!

【问题讨论】:

  • 你尝试了什么没有成功? date() 完全符合您的要求。
  • 是的,但不知何故(是的,我知道,我觉得自己很愚蠢)我无法正确识别 W-Y :)

标签: cakephp date


【解决方案1】:

如果你只想在 MySQL 中做,你可以使用WEEK() 函数:

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

注意,您可能需要为 WEEK() 指定模式编号,以告诉 MySQL 从一周中的哪一天开始。例如。一些服务器可能配置为在星期一开始几周,而另一些可能在星期日开始。

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

您可能还想查看 MySQL 的其他周数函数,例如 YEARWEEK(),它返回年份 + 周数(例如 201012):

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

【讨论】:

  • 谢谢你的回答!不过,另一个选项更容易一些,无需更改 sql 查询。
【解决方案2】:

使用strtotimedate

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

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

【讨论】:

  • 谢谢!这太容易了,我无法抗拒。我忘了把 strtotime() 放在我自己的日期实验中。谢谢!
【解决方案3】:

试试这个:

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

【讨论】:

    【解决方案4】:

    在 PHP 中你可以试试这个:

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

    【讨论】:

      猜你喜欢
      • 2015-10-20
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 2017-09-04
      • 2020-08-31
      • 2021-07-27
      • 1970-01-01
      • 2020-04-01
      相关资源
      最近更新 更多