mysql给定一年中的第几周,输出这一周的日期

发布网友 发布时间:2022-04-25 13:08

我来回答

4个回答

热心网友 时间:2022-04-10 19:15

那么你的数据表中需要有个字段是数据添加的时间,而且最好是时间戳格式,也就是10位的数值。然后查询的时候可以用时间间隔的where条件来查询,例如要查询2015年第22周,那么开始时间就是2015年1月1日的时间戳+21*604800,因为一周是604800秒,所以用21乘以604800,这样得到开始时间,那结束时间就是开始时间再加604800秒,查询的时候语句就是select * from 数据表 where 时间戳字段>开始时间 and 时间戳字段<结束时间; 这样就可以查到了。

热心网友 时间:2022-04-10 20:33

SET @wk = 10;-- 第10周
SELECT
-- 获取当前时间 -> 获取今年年份 -> 转换为今年1月1号 -> 转换为时间戳 -> 加上周*天*时*分*秒 -> 转换为日期(该日期不一定为周一,视当年1月1号定)
from_unixtime( unix_timestamp( MAKEDATE( YEAR ( NOW( ) ), 1 ) ) + @wk * 7 * 24 * 60 * 60 ) AS '今年一月一号第10周的日期',
-- 获取当前日期是周几  然后加1
-- DAYOFWEEK(date) 返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准
-- WEEKDAY(date) 返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)
weekday(
from_unixtime( unix_timestamp( MAKEDATE( YEAR ( NOW( ) ), 1 ) ) + @wk * 7 * 24 * 60 * 60 ) 
) + 1 AS '周几',
-- 根据第几周后的日期 减 那天到周一的时间戳 得出今年第几周的周一日期
from_unixtime(
unix_timestamp( MAKEDATE( YEAR ( NOW( ) ), 1 ) ) + @wk * 7 * 24 * 60 * 60 - (
weekday(
from_unixtime( unix_timestamp( MAKEDATE( YEAR ( NOW( ) ), 1 ) ) + @wk * 7 * 24 * 60 * 60 ) 
) * 24 * 60 * 60 

)

感觉我这个复杂了,如有更好的方法请指出,谢谢喽

热心网友 时间:2022-04-10 22:07

mysql给定一年中的第几周,输出这一周的日期
那么你的数据表中需要有个字段是数据添加的时间,而且最好是时间戳格式,也就是10位的数值。然后查询的时候可以用时间间隔的where条件来查询,例如要查询2015年第22周,那么开始时间就是2015年1月1日的时间戳+21*604800,因为一周是604800秒,所以用21乘以604800,这样得到开始时间,那结束时间就是开始时间再加604800秒,查询的时候语句就是select * from 数据表 where 时间戳字段>开始时间 and 时间戳字段<结束时间; 这样就可以查到了。

热心网友 时间:2022-04-10 23:59

这个是用php来做的吧

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com