首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以将mySQL设置为一个星期六作为一周的开始?

是否可以将mySQL设置为一个星期六作为一周的开始?
EN

Stack Overflow用户
提问于 2010-09-11 02:08:41
回答 3查看 2K关注 0票数 2

是否可以将mySQL设置为一个星期六作为一周的开始?

我正在尝试运行如下查询:

代码语言:javascript
运行
复制
SELECT DISTINCT(week(`date`)) 
  FROM `table` 
 WHERE `date` BETWEEN '2010-08-14' AND '2010-08-27'

但这一周是从周六开始的,而不是周日或周一。(它针对的是支付期周,而不是常规周)似乎周功能的模式只提供周日或周一作为开始日期。

我读到过设置default_week_format可能会有所帮助,但我认为这对我不起作用,因为这只适用于特定的报告,而不是整个系统。

我还有其他选择吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-11 02:19:40

抄袭自Tomasz答案中链接的评论:

问题:使用用户指定的周的开始日期和用户指定的日期查找周的开始和结束日期。

代码语言:javascript
运行
复制
date_sub(t.date, interval if(dayofweek(t.date)-$weekStartingDay >= 0, dayofweek(t.date)-$weekStartingDay, dayofweek(t.date)-$weekStartingDay+7) day) week_start

date_sub(t.date, interval if(dayofweek(t.date)-$weekStartingDay >= 0, dayofweek(t.date)-$weekStartingDay, dayofweek(t.date)-$weekStartingDay+7) - 6 day) week_end
票数 1
EN

Stack Overflow用户

发布于 2015-06-24 18:40:23

我将提出另一个决定,允许您在不同时区中定义的时区和最重要的按周分组之间操作和自定义日历

因此,让我们假设您的mySQL运行在协调世界时配置的服务器上,并且您希望有一个提前7小时的自定义日历,因此您的周应该从星期六上午7点开始

代码语言:javascript
运行
复制
CREATE TABLE `wh_blur_calendar` (
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `y` smallint(6) DEFAULT NULL,
  `q` tinyint(4) DEFAULT NULL,
  `m` tinyint(4) DEFAULT NULL,
  `d` tinyint(4) DEFAULT NULL,
  `w` tinyint(4) DEFAULT NULL,
  PRIMARY KEY (`date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `wh_ints` (
  `i` tinyint(4) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into wh_ints values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);

现在,一个流行的笛卡尔连接应该填充到您的表中:

代码语言:javascript
运行
复制
INSERT INTO wh_blur_calendar (date)
SELECT DATE('2010-01-01 00:00:00 ') + INTERVAL a.i*10000 + b.i*1000 + c.i*100 + d.i*10 + e.i DAY
FROM wh_ints a JOIN wh_ints b JOIN wh_ints c JOIN wh_ints d JOIN wh_ints e
WHERE (a.i*10000 + b.i*1000 + c.i*100 + d.i*10 + e.i) < 10245
ORDER BY 1;

让我们更新小时数:

代码语言:javascript
运行
复制
update  db_wh_repo.wh_blur_calendar set date = date_add(date, interval 7 hour);

最后,以一种自定义的方式安排日历周

代码语言:javascript
运行
复制
UPDATE wh_blur_calendar
SET 
    y = YEAR(date),
    q = quarter(date),
    m = MONTH(date),
    d = dayofmonth(date),
    w = week(date_add((date), interval 1 day));

相信我,我花了几个小时做出这个决定,但如果你想要根据自定义时区和周的定义对结果进行分组,它给了你很大的自由。

票数 1
EN

Stack Overflow用户

发布于 2010-09-11 02:13:18

周一或周日是可能的,AFAIK没有其他选择:

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3687119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档