网站首页 > 知识剖析 正文
一、查询某一天的周数
SQL Server计算周数时会算上年初的不满的一周。
Mysql计算周数时不会算上年初的不满的一周
1.1(SQL Server)
在 SQL Server 中默认情况下,每周的开始都是从周日开始算起的。
关于使用 SET DATEFIRST <VALUE> - <VALUE> 的值从 1 到 7,即周一到周日,默认值是 7。
要注意的是 SET DATEFIRST 只在当前执行中有效,也就是说比如新开一个查询页面继续查询 SELECT @@DATEFIRST 还是显示默认值 7。
示例:
#周一为一周的第一天
SET DATEFIRST 1
SELECT DATENAME(WEEK,'2021-11-22') AS WeekName
结果:48
1.2 (Mysql)
#周一为一周的第一天
SELECT * FROM t1 WHERE YEARWEEK(date_format('2021-11-22','%Y-%m-%d'),1) = YEARWEEK(now(),1);
结果:47
#周日为一周的第一天
SELECT * FROM task WHERE YEARWEEK(date_format(时间字段,'%Y-%m-%d')) = YEARWEEK(now());
结果:47
1.3 (网上的万年历)
2021-11-23的周数是47,估计用的是Mysql
二、SQL Server中的Datediff函数
1、描述:返回两个日期之间的时间间隔, 用于判断在两个日期之间存在的指定时间间隔的数目。
2、语法:DateDiff(interval, startdate, enddate)
3、参数:
a、interval:必选。字符串表达式,表示用于计算 startdate 和 enddate 之间的时间间隔(时间间隔=enddate减去startdate)
年:Year Yy yyyy 1753 ~ 9999
季:Quarter Qq q 1 ~ 4
月:Month Mm m 1 ~ 12
一年的日数,一年中的第几日:Day of year Dy y 1-366
日:Day Dd d 1-31
一周的日数,一周中的第几日:Weekday Dw w 1-7
周数:Week Wk ww 0 ~ 51
时:Hour Hh h 0 ~ 23
分:Minute Mi n 0 ~ 59
秒:Second Ss s 0 ~ 59
毫秒:Millisecond Ms - 0 ~ 999
重点来了:设置 SET DATEFIRST 1 后,DATEDIFF(WEEK,@date1,@date2) 并不会以周一为一周的开始,还是使用默认的周日为一周的开始。起作用的是DATENAME(WEEK,'2021-11-22')
DATENAME用法:
SELECT CONVERT(varchar(10), getdate(), 120)--当前年月日,Example:YYYY-MM-DD
SELECT CONVERT(varchar(10), getdate(), 112)--当前年月日,Example:YYYYMMDD
SELECT CONVERT(varchar(10), getdate(), 108)--当前年月日,Example:hh:mm:ss
SELECT DATENAME (day ,getdate())--当月几号
SELECT DATENAME (month ,getdate())--月份
SELECT DATENAME (quarter ,getdate())--季度
SELECT DATENAME (dayofyear ,getdate())--一年中的第几天
SELECT DATENAME(week,GETDATE())--一年中第几周
SELECT DATENAME(weekday,GETDATE())--星期几
SELECT DATENAME(hour,GETDATE())--当前几点,24小时制的
SELECT DATENAME(minute,GETDATE())--取当前分钟数
SELECT DATENAME(second,GETDATE())--取当前秒数
SELECT DATENAME(millisecond,GETDATE())--毫秒
三、计算一周的时间段(#周一为一周的第一天)
(SQL SERVER)
SET DATEFIRST 1
SELECT DATEADD(DAY,-(DATEPART(WEEKDAY,getdate())-1),getdate()),DATEADD(DAY,(7-DATEPART(WEEKDAY,getdate())),getdate()),getdate()
当前系统日期、时间
- select getdate()
时间格式化为”YYYY-MM-DD“
- select 当前日期=convert(varchar(10),getdate(),120)
(MYSQL)
查询上周数据(addtime为时间戳)
WHERE YEARWEEK(FROM_UNIXTIME(addtime,'%Y-%m-%d'),1) = YEARWEEK(now(),1)-1
查询上周数据(addtime为datetime格式)
WHERE YEARWEEK(date_format(addtime,'%Y-%m-%d'),1) = YEARWEEK(now(),1)-1;
四、计算今天是第几周
set datefirst 1
select 本年第几周=datename(week,getdate()),今天是周几=datename(weekday,getdate())
结果:
本年第几周 今天是周几
48 星期二
五、SQL SERVER时间相关函数
GetDate( ) 返回系统目前的日期与时间
DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1
DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期
DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值
DateName (interval,date) 返回日期date中,interval指定部分所对应的字符串名称
猜你喜欢
- 2024-11-12 Linux运维面试sql语句2 面试linux运维工程师提问哪些问题
- 2024-11-12 PowerBI时间日期函数 powerbi日期相减
- 2024-11-12 数据库日期与时间函数概览 数据库时间日期型
- 2024-11-12 画像笔记7- 非实时标签-统计标签-最近来访标签
- 2024-11-12 扎心了!面试时遇到要手写sql,结果函数拼写不出来
- 2024-11-12 还不用Excel算算离国庆还有多少天?Get这11个神技每天省2小时!
- 2024-11-12 种猪生产数据预处理方法之数据清洗
- 2024-11-12 Mysql数据库常见函数(下)——日期时间函数
- 2024-11-12 MySQL常用函数之日期函数 mysql日期yyyymmdd
- 2024-11-12 MySQL常用函数,程序员真得看看 mysql常见函数
- 04-29php开发者composer使用看这一篇就够了
- 04-29引用和变量声明在不同语言中的实作
- 04-29PHP 没你想的那么差
- 04-29Ubuntu linux 上的 Nginx 和 Php 安装
- 04-29CentOS下通过yum搭建lnmp(单版本PHP)
- 04-29为什么 PHP8 是个高性能版本
- 04-29PHP8函数包含文件-PHP8知识详解
- 04-29使用无参数函数进行命令执行
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)