前言 今天又遇到很坑的问题了,因为外国友人每一周的起始日期是周日,跟我们的不一样,我们每一周的起始日期是星期一,这样导致我要用mysql统计一周的数据的时候,对于我们来说,查询的记录包括:上周日的记录...大家可以很明显的看到2018年12月2日的记录也查出来了,12月2日是星期日。为了让大家更直观的看,我把12月的月份截出来 ? 所以这样查询出来的记录,对于我们来说是有问题的。接下来教大家解决办法。...从上面YEARWEEK()函数API可以知道,还有mode这个字段是可以自己设置一周是从星期几开始的,不写的话默认是星期日为一周的开始日期,这里为了适用我们的系统,将星期一设置为一周的开始日期,我们就给
CURTIME() 返回当前的时间 DATE() 提取日期或日期/时间表达式的日期部分 EXTRACT() 返回日期/时间按的单独部分 DATE_ADD() 给日期添加指定的时间间隔 DATE_SUB() 从日期减去指定的时间间隔...AM 或 PM %r 时间,12-小时(hh:mm:ss AM 或 PM) %S 秒(00-59) %s 秒(00-59) %T 时间, 24-小时 (hh:mm:ss) %U 周 (00-53) 星期日是一周的第一天...%u 周 (00-53) 星期一是一周的第一天 %V 周 (01-53) 星期日是一周的第一天,与 %X 使用 %v 周 (01-53) 星期一是一周的第一天,与 %x 使用 %W 星期名 %w 周的天...(0=星期日, 6=星期六) %X 年,其中的星期日是周的第一天,4 位,与 %V 使用 %x 年,其中的星期一是周的第一天,4 位,与 %v 使用 %Y 年,4 位 %y 年,2 位
MySQL period_add(P,N):日期加/减去N月。...AM 或 PM %r 时间,12-小时(hh:mm:ss AM 或 PM) %S 秒(00-59) %s 秒(00-59) %T 时间, 24-小时 (hh:mm:ss) %U 周 (00-53) 星期日是一周的第一天...%u 周 (00-53) 星期一是一周的第一天 %V 周 (01-53) 星期日是一周的第一天,与 %X 使用 %v 周 (01-53) 星期一是一周的第一天,与 %x 使用 %W 星期名 %w 周的天...(0=星期日, 6=星期六) %X 年,其中的星期日是周的第一天,4 位,与 %V 使用 %x 年,其中的星期一是周的第一天,4 位,与 %v 使用 %Y 年,4 位 %y 年,2 位 实例 下面的脚本使用...2008 11:45 PM 12-29-2008 29 Dec 08 29 Dec 2008 16:25:46.635 -------------------- 数据库优化 1.开启缓存,尽量使用php
返回 date 在一年中的季度,范围为 1 到 4: mysql> SELECT QUARTER(’98-04-01’); -> 2 WEEK(date) WEEK(date,first) 对于星期日是一周中的第一天的场合...两个参数形式的 WEEK() 允许你指定一周是否以星期日或星期一开始,以及返回值为 0-53 还是 1-52。...这里的一个表显示第二个参数是 如何工作的: 值 含义 0 一周以星期日开始,返回值范围为 0-53 1 一周以星期一开始,返回值范围为 0-53 2 一周以星期日开始...注意,如果一周是上一年的最后一周,当你没有使用 2 或 3 做为可选参数时, MySQL 将返回 0: mysql> SELECT YEAR(’2000-01-01’), WEEK(’2000-01-...expr 是一个表达式,指定从开始日期上增加还是减去间隔值。expr 是一个字符串;它可以以一个 “-” 领头表示一个 负的间隔值。type 是一个关键词,它标志着表达式以何格式被解释。
AM 或 PM %r 时间,12-小时(hh:mm:ss AM 或 PM) %S 秒(00-59) %s 秒(00-59) %T 时间, 24-小时 (hh:mm:ss) %U 周 (00-53) 星期日是一周的第一天...%u 周 (00-53) 星期一是一周的第一天 %V 周 (01-53) 星期日是一周的第一天,与 %X 使用 %v 周 (01-53) 星期一是一周的第一天,与 %x 使用 %W 星期名 %w 周的天...(0=星期日, 6=星期六) %X 年,其中的星期日是周的第一天,4 位,与 %V 使用 %x 年,其中的星期一是周的第一天,4 位,与 %v 使用 %Y 年,4 位 %y 年,2 位 字符串转换为时间...DAY_MICROSECOND DAY_SECOND DAY_MINUTE DAY_HOUR YEAR_MONTH date_sub(date,INTERVAL expr type) 用法跟date_add相同,作用是减去指定的时间间隔
date 在一年中的季度,范围为 1 到 4: mysql> SELECT QUARTER(’98-04-01’); -> 2 WEEK(date) WEEK(date,first) 对于星期日是一周中的第一天的场合...两个参数形式的 WEEK() 允许你指定一周是否以星期日或星期一开始,以及返回值为 0-53 还是 1-52。...这里的一个表显示第二个参数是如何工作的: 值 含义 0 一周以星期日开始,返回值范围为 0-53 1 一周以星期一开始,返回值范围为 0-53 2 一周以星期日开始,返回值范围为 1-53 3 一周以星期一开始...注意,如果一周是上一年的最后一周,当你没有使用 2 或 3 做为可选参数时,MySQL 将返回 0: mysql> SELECT YEAR(’2000-01-01’), WEEK(’2000-01-01...expr 是一个表达式,指定从开始日期上增加还是减去间隔值。expr 是一个字符串;它可以以一个 “-” 领头表示一个负的间隔值。type 是一个关键词,它标志着表达式以何格式被解释。
很多的查询条件和统计都需要求得一周的时间段,也就是星期一到星期日的时间段。给出日期d和星期string之后计算下一个星期的日期....String是星期几;当前会话的语言指定了一周中的某一天.返回值的时间分量与d的时间分量是相同的....④ 如果 fmt 为“DAY”则舍入到最近的周的周日,即上半周舍去,下半周作为下一周周日。...方式一:使用TO_CHAR(SYSDATE,'D')可以求得当前日期是一周的第几天,得到的结果是星期日开始作为第1天的,那么星期一就是第2天,星期日就是第8天。...7天,而星期日的日期就是5-21减去1天. select to_char(sysdate, 'yyyy-mm-dd') 今天,'星期'||substr('日一二三四五六',to_number(to_char
Return_type返回的数字1 或省略数字 1(星期日)到 7(星期六)。 同 Microsoft Excel 早期版本。2数字 1(星期一)到 7(星期日)。...用法 数据 2008-2-14 公式 描述(结果) 结果 =WEEKDAY(A2) 使用数字 1(星期日)到 7(星期六)表示的一周中的第几天 (5) 5 =WEEKDAY(A2, 2) 使用数字...1(星期一)到 7(星期日)表示的一周中的第几天 (4) 4 =WEEKDAY(A2, 3) 使用数字 0(星期一)到 6(星期日)表示的一周中的第几天 (3) 3 18、日期函数 DATE() 返回表示特定日期的连续序列号...如果 *month* 小于 1,则 *month* 会从指定年份的第一个月开始减去该月份数,然后再加上 1 个月。...如果 *day* 小于 1,则 *day* 从指定月份的第一天开始减去该天数,然后再加上 1 天。例如,DATE(2008,1,-15) 返回表示 2007 年 12 月 16 日的序列号。
SELECT DATE_ADD('2010-3-4', INTERVAL 45 DAY) AS OrderPayDate DATE_SUB() 函数从日期减去指定的时间间隔。...和DATE_ADD 一个是加上日期, 一个是减去日期 DATEDIFF() 函数返回两个日期之间的天数。...AM 或 PM %r 时间,12-小时(hh:mm:ss AM 或 PM) %S 秒(00-59) %s 秒(00-59) %T 时间, 24-小时(hh:mm:ss) %U 周(00-53)星期日是一周的第一天...%u 周(00-53)星期一是一周的第一天 %V 周(01-53)星期日是一周的第一天,与 %X 使用 %v 周(01-53)星期一是一周的第一天,与 %x 使用 %W 星期名 %w 周的天...(0=星期日, 6=星期六) %X 年,其中的星期日是周的第一天,4 位,与 %V 使用 %x 年,其中的星期一是周的第一天,4 位,与 %v 使用 %Y 年,4 位 %y 年,2 位 防止 SQL
通过 Calendar 类,你可以执行许多常见的日期和时间操作,如计算日期差异、添加或减去时间单位等。...添加和减去时间单位 Calendar 类还提供了方法来添加和减去时间单位,例如,天、小时、分钟等。...获取一周的第一天和最后一天 有时你可能需要获取一周的第一天(通常是星期日)和最后一天(通常是星期六)。...Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); // 设置为星期日...Date lastDayOfWeek = calendar.getTime(); // 获取一周的最后一天 System.out.println("First day of the week: "
AM 或 PM %r 时间,12-小时(hh:mm:ss AM 或 PM) %S 秒(00-59) %s 秒(00-59) %T 时间, 24-小时 (hh:mm:ss) %U 周 (00-53) 星期日是一周的第一天...%u 周 (00-53) 星期一是一周的第一天 %V 周 (01-53) 星期日是一周的第一天,与 %X 使用 %v 周 (01-53) 星期一是一周的第一天,与 %x 使用 %W 星期名 %w 周的天...(0=星期日, 6=星期六) %X 年,其中的星期日是周的第一天,4 位,与 %V 使用 %x 年,其中的星期一是周的第一天,4 位,与 %v 使用 %Y 年,4 位 %y 年,2 位
如果未予指定,则以星期日为第一天。 firstweekofyear 可选。指定一年的第一周的常数。如果未予指定,则以包含 1 月 1 日的星期为第一周。...vbFirstFourDays 2 从第一个其大半个星期在新的一年的一周开始。 vbFirstFullWeek 3 从第一个无跨年度的星期开始。...当 interval 是“一周的日数”(w) 时,DateDiff 返回两日期间的周数。如果 date1 是星期一,DateDiff 计算到 date2 为止的星期一的个数。...由计算 date1 与 date2 之间星期日的个数而得。...如果 date2 刚好是星期日,则 date2 也会被加进 DateDiff 的计数结果中;但不论 date1 是否为星期日,都不将它算进去。
toStartOfWeek(t[,mode]) 按mode将Date或DateTime向前取整到最近的星期日或星期一。 返回Date类型。...两个参数形式可以指定星期是从星期日还是星期一开始,以及返回值应在0到53还是从1到53的范围内。如果省略了mode参数,则默认 模式为0。...否则,它是上一年的最后一周,下周是第1周。 2 Sunday 1-53 看周日在哪一年 3 Monday 1-53 如果包含1月1日的一周在后一年度中有4天或更多天,则为第1周。...否则,它是上一年的最后一周,下周是第1周。 4 Sunday 0-53 如果包含1月1日的一周在后一年度中有4天或更多天,则为第1周。否则,它是上一年的最后一周,下周是第1周。...5 Monday 0-53 看周一在哪一年 6 Sunday 1-53 如果包含1月1日的一周在后一年度中有4天或更多天,则为第1周。否则,它是上一年的最后一周,下周是第1周。
import java.util.GregorianCalendar; public class FormatDate { private static int weeks = 0;// 用来全局控制 上一周...,本周,下一周的周数变化 private static int MaxDate;// 一月最大天数 private static int MaxYear;// 一年最大天数 /**...设为当前月的1 号 lastDate.add(Calendar.MONTH, 1);// 加一个月,变为下月的1 号 lastDate.add(Calendar.DATE, -1);// 减去一天...设为当前月的1 号 lastDate.add(Calendar.MONTH, -1);// 减一个月,变为下月的1 号 // lastDate.add(Calendar.DATE,-1);//减去一天...,星期日是第一天,星期二是第二天......
AM 或 PM %r 时间,12-小时(hh:mm:ss AM 或 PM) %S 秒(00-59) %s 秒(00-59) %T 时间, 24-小时 (hh:mm:ss) %U 周 (00-53) 星期日是一周的第一天...%u 周 (00-53) 星期一是一周的第一天 %V 周 (01-53) 星期日是一周的第一天,与 %X 使用 %v 周 (01-53) 星期一是一周的第一天,与 %x 使用 %W 星期名 %w 周的天...(0=星期日, 6=星期六) %X 年,其中的星期日是周的第一天,4 位,与 %V 使用 %x 年,其中的星期一是周的第一天,4 位,与 %v 使用 %Y 年,4 位 %y 年,2 位 FROM_UNIXTIME
因此,周数是逐年计算的,因此第 1 周是完成从上一年最后一周开始的 7 天期间的天数。一周总是从星期日开始;因此,日历年的第一个星期日标志着从第 1 周到第 2 周的变化。...如果一年中的第一个星期日是 1 月 1 日,则该星期日是第 1 周;如果一年中的第一个星期日晚于 1 月 1 日,则该星期日是第 2 周的第一天。因此,第 1 周的长度通常少于 7 天。...示例以下嵌入式 SQL 示例返回 2005 年 1 月 2 日(星期日)和 2006 年 1 月 1 日(星期日)的星期几和一年中的星期几。...Wk_Horolog, {fn WEEK($ZTIMESTAMP)} AS Wk_ZTS 20 20 20 20 20以下嵌入式 SQL 示例显示了 默认的一年中的一周以及应用...ISO 8601 标准的一年中的一周:/// d ##class(PHA.TEST.SQLFunction).Week1()ClassMethod Week1(){TestISO s def =
地球自转一周需要24个小时,即24 x 60 x 60 = 86400秒。但是地球有轻微的颤动,所以需要更加精确的定义。...,其月的日期、年的日期、月或年修改为给定的值 getDayOfMonth 获取月的日期(在1到31之间) getDayOfYear 获取年的日期(在1到366之间) getDayOfWeek 获取星期日期...getDayOfWeek方法:产生星期日期,即DayOfWeek枚举的某个值。DayOfWeek.MONDAY的枚举值是1。...DayOfWeek枚举具有便捷方法plus和minus,以7为模型计算星期日期。 例如,DayOfWeek.SATURDAY.plus(3)会产生DayOfWeek.TUESDAY。...(weekday) 从给定的日期开始的下一个或上一个给定的星期日期 dayOfWeekInMonth(n, weekday) 月份中的n个weekday lastInMonth(weekday) 月份中的最后一个
在SQL中不能用date()代替 它在那相当于now() 举例一周的 select * from 表 where datediff(week,时间字段,getdate())=0 要注意的是,datediff...是将星期日做为一周的第一天 即:datediff(week,'2003-07-27','2003-08-01')的值为0 如果你要求将星期一做为一周的第一天,就要用: select * from...,比如随便 2009-8-27,加一个月就是2009-9-27,然后减去2009-8-27时间的天数27天 正好是2009-8-31,没问题呀。...都不是,由于月大月小的问 题,6月份只有30天,所以2009-5-31加一个月后是2009-6-30日,还是按上面的写法然后再减去2009-5-31时间的天数31天,最终 得到的最后一天是2009-5-...2009-1-30加一个月是2009-2-28,减去28天后是2009-1-31符合正确性。
AM 或 PM %r 时间,12-小时(hh:mm:ss AM 或 PM) %S 秒(00-59) %s 秒(00-59) %T 时间, 24-小时 (hh:mm:ss) %U 周 (00-53) 星期日是一周的第一天...%u 周 (00-53) 星期一是一周的第一天 %V 周 (01-53) 星期日是一周的第一天,与 %X 使用 %v 周 (01-53) 星期一是一周的第一天,与 %x 使用 %W 星期名 %w 周的天...(0=星期日, 6=星期六) %X 年,其中的星期日是周的第一天,4 位,与 %V 使用 %x 年,其中的星期一是周的第一天,4 位,与 %v 使用 %Y 年,4 位 %y 年,2 位 如果想要统计一天之内
,返回该周的第一天ISO 当年第一天可能是公历前一年12月末QuarterQ返回当季度第一天MonthMONTH, MON, MM, RM返回当月第一天WeekWW每年的1月1日作为当年的第一周的第一天...,返回当周第一天星期一到星期日都有可能IWIW星期一为每周的第一天,返回当周第一天WW每月1日作为本月第一周的第一天,返回当周第一天DayDDD, DD, J返回当前日期Start day of the...weekDAY, DY, D星期日为每周的第一天,返回当周第一天HourHH, HH12, HH24返回本小时的开始时间MinuteMI返回本分钟的开始时间nullnullnull当不指定fmt时,默认为...,返回当周第一天星期一到星期日都有可能IWIW星期一为每周的第一天,返回当周第一天WW每月1日作为本月第一周的第一天,返回当周第一天DayDDD, DD, J返回当前日期Start day of the...weekDAY, DY, D星期日为每周的第一天,返回当周第一天HourHH, HH12, HH24返回本小时的开始时间MinuteMI返回本分钟的开始时间nullnullnull当不指定fmt时,默认为