mySQL中开始一周的时间戳

时间:2015-04-16 15:45:01

标签: mysql date

我在表中有一个时间戳字段,如1429198764(2015年4月16日下午3:39(UTC)),我想计算此时间戳的周开始时间戳(假设一周)星期一开始)这将是1429142400(04/16/2015 @ 12:00 am(UTC))

对于当天开始的时间戳,我可以使用:
unix_timestamp(from_unixtime(timestamp, '%Y-%m-%d 00:00:00'))

对于小时的开始,我可以使用:
unix_timestamp(from_unixtime(timestamp, '%Y-%m-%d %H:00:00'))

但是对如何开始本周开始感到困惑。

1 个答案:

答案 0 :(得分:1)

使用DATE数据类型,返回上一个星期一的表达式相当简单(尽管可能不那么简单):

  dt - INTERVAL WEEKDAY(dt) DAY

如果WEEKDAY值是星期一,则dt函数返回0,如果是星期二,则返回1等等。

所以,如果dt是星期二,我们只需要从中扣除1天,我们就会在上周一回来。 WEEKDAY函数恰好返回一个非常方便我们使用的整数值。如果我们需要备份到Sunday,那么我们可以使用MySQL DAYOFWEEK函数。

相同的模式可以与DATETIMETIMESTAMP数据类型一起使用。如果我们想要回到午夜,我们只需要一些额外的表达式来处理截断时间部分。

从整数值到MySQL TIMESTAMP的转换增加了一些混乱,但模式保持不变。只需将上面示例中的dt替换为返回MySQL TIMESTAMP的表达式。