日期杂类问题总结

日常应用程序不使用日期和时间格式存储数据,但往往会存在使用日期读取、统计和处理的场景。日期的处理和时间的换算是本次主要议题。

一 常用MySQL的日期时间处理函数

函数说明
AddDate()增加一个日期(天,周等)
AddTime()增加一个时间(时,分等)
CurDate()返回当前日期
CurTime()返回当前时间
Date()返回时间的日期部分
DateDiff()计算日期只差
Date_Add()日期运算函数
Date_Formate()返回格式化的日期或时间字符串
Day()返回日期的天数部分
DayOfWeek()一周对应的星期几
Hour()返回时间的小时部分
Minute()返回时间的分钟部分
Month()返回时间的月份
Now()返回当前日期和时间
Second()返回时间的秒部分
Time()返回时间的时间部分
Year()返回日期的年部分

举例:

select u_id,order_id
from orders
where 
Date(order_date)='2020-01-01'

二 日期周别的判断

现常使用的日期所在周别判断标准,是国际标准ISO 8601,即以该年的第一个星期四的周为该年的第 1 周,通常称作欧洲周编号机制。详细的规则,可参考:国际标准计算时间方法

2.1 判断第一个日历星期的方法

判断第一个日历星期四种等效说法:

1,本年度第一个星期四所在的星期;
2,1月4日所在的星期;
3,本年度第一个至少有4天在同一星期内的星期;
4,星期一在去年12月29日至今年1月4日以内的星期;

推理可得:

如果1月1日是星期一、星期二、星期三或者星期四,它所在的星期就是第一个日历星期;
如果1月1日是星期五、星期六或者星期日,它所在的星期就是上一年第52或者53个日历星期;
12月28日总是在一年最后一个日历星期

2.2 利用Excel判断当前日历所在周别

在Excel里,有两个函数可辅助判断

1. weeknum(A1,n)
描述:用来判断本周是本年的第几周,有两种判断机制:
机制1:当参数n=1,以1 月 1 日起为该年的第 1 周
机制2:当参数n=2,以该年的第一个星期四的周为该年的第 1 周

2.weekday(A1,n)
描述:用来判断今天是这周的周几,取值结果,和参数n的取值有关,n的取值包括如下:
周别机制及对应周别
注意:

  • 截图使用参考软件:WPS
  • Excel和WPS可能会有一些差异,未进行实际比对验证

在Excel中weeknum函数得出的周别,理应按照机制2算出来,但是若1月1日是星期五、星期六或者星期日,它所在的星期就是上一年第52或者53个日历星期,在Excel中计算就会出现问题,例如:

日期Excel周别(机制1)Excel 周别(机制2)周几实际IOS标准周别
2021-01-0111553(上一年)
2021-01-0211653(上一年)
2021-01-0321753(上一年)
2021-01-042211
2021-01-052221
2021-01-062231
2021-01-072241
2021-01-082251
2021-01-092261
2021-01-103271
2021-01-113312
2021-01-123322
2021-01-133332
2021-01-143342
2021-01-153352
2021-01-163362
2021-01-174372
2021-01-184413
2021-01-194423

如果机制2算出的周别不符合第52/53个日历星期,把该周别给减1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值