欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

处理时间_5_计算时间列所在年的周序号

发布时间:2024/9/27 33 豆豆
生活随笔 收集整理的这篇文章主要介绍了 处理时间_5_计算时间列所在年的周序号 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

                            计算时间列所在年的周序号

 

需求描述

需求:对EMP表里员工KING和SMITH的hiredate入职时间差,基于生成的日期算每天所在的周,相对于年.

解决方法:通过DATE_FORMAT函数来完成.

注: 数据库数据集SQL脚本详见如下链接地址

员工表结构和数据初始化SQL脚本

SQL代码

-- Mysql: SELECT B.ename b_Ename,B.HIREDATE b_hiredate,A.ename a_Ename, A.HIREDATE a_hiredate ,DATE_ADD(A.hiredate,INTERVAL pos DAY) date_Seq ,DATE_FORMAT(DATE_ADD(A.hiredate,INTERVAL pos DAY),'%U') AS weekno_Year FROM emp A,emp B,(SELECT i-1 AS pos FROM tb_incr) seq WHERE A.ename = 'SMITH' AND B.ename = 'KING' AND seq.pos <=DATEDIFF(B.HIREDATE,A.HIREDATE)

:mysql里也可以通过yearweek函数来实现

-- mysql SELECT YEARWEEK(now()) 'yearWeek', SUBSTRING(YEARWEEK(now()),1,4)'year', SUBSTRING(YEARWEEK(now()),5,2) 'weekOfyear'

 

执行结果

-- SQL Server SELECT B.ename b_Ename,B.HIREDATE b_hiredate,A.ename a_Ename, A.HIREDATE a_hiredate ,DATEADD(DAY,seq.pos,A.HIREDATE) AS date_Seq ,DATEPART(WK,DATEADD(DAY,seq.pos,A.HIREDATE)) AS weekno_Year FROM emp A,emp B,(SELECT number AS pos FROM master.[dbo].[spt_values] WHERE type = 'P') seq WHERE A.ename = 'SMITH' AND B.ename = 'KING' AND seq.pos <= DATEDIFF(DAY,A.HIREDATE,B.HIREDATE)

 

总结

以上是生活随笔为你收集整理的处理时间_5_计算时间列所在年的周序号的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。