sql查询数据枚举判断转换及取时间间隔内数据
Posted 圈圈小白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql查询数据枚举判断转换及取时间间隔内数据相关的知识,希望对你有一定的参考价值。
例子:
SELECT u.U_ChineseName AS 处理人,case u.U_Region
when 1then \'省公司\'
when 2then \'西安分公司\'
when 3then \'铜川分公司\'
when 4then \'咸阳分公司\'
when 5then \'宝鸡分公司\'
when 6then \'渭南分公司\'
when 7then \'汉中分公司\'
when 8then \'安康分公司\'
when 9then \'商洛分公司\'
when 10then \'榆林分公司\'
when 11then \'延安分公司\'END AS 建设单位,u.U_OaDepartment AS 部门,u.U_OaGroup AS 专业室,td.Td_Title AS 待办标题,td.Td_ReceiveTime AS 发送时间
FROM T_Todo AS td,T_User AS u WHERE (td.Td_Title LIKE \'%设计批复%\' OR td.Td_Title LIKE \'%终验批复%\' ) AND td.Td_ActionTime IS NULL AND td.Td_DeleteTime IS NULL
AND td.Td_Type=1 AND td.Td_ReceiveActorId IN (SELECT u.U_Id FROM T_User WHERE u.U_DeleteTime IS NULL)
AND( u.U_Role LIKE \'%50%\' OR u.U_Role LIKE \'%49%\')
AND td.Td_ReceiveTime<=dateadd(day, -3, getdate())
ORDER BY u.U_Region
① case when 枚举值 them 名称
②接收时间小于等于当前时间三天内数据
--1. 当前系统日期、时间
select
getdate()
--2015-01-06 09:27:27.277
--2.时间操作 dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值
dateadd(datepart,number,
date
)
注:
datepart :
year
(yy, yyyy) | quarter(qq,q) |
month
(mm,m) | week(ww,wk) |
day
(dd,dy) |
hour
(h) |
minute
(mi,n) |
second
(ss,s)| millisecond(ms)
date
参数是合法的日期表达式。number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。
例:
select
getdate()
select
dateadd(
year
,1,getdate())
--2016-01-06 09:27:27.277
select
dateadd(
month
,1,getdate())
--2017-02-06 09:27:27.277
select
dateadd(
day
,1,getdate())
--2015-01-07 09:27:27.277
select
dateadd(week,1,getdate())
--2015-01-13 09:27:27.277
select
dateadd(weekday,1,getdate())
--2015-01-07 09:27:27.277
select
dateadd(
hour
,1,getdate())
--2015-01-06 10:27:27.277
select
dateadd(
Minute
,1,getdate())
--2015-01-06 09:28:27.277
select
dateadd(
Second
,1,getdate())
--2015-01-06 09:28:28.277
--3. datediff 返回跨两个指定日期的日期和时间边界数。
datediff(
date
-part, startdate, enddate )
注:
datepart :
year
(yy, yyyy) | quarter(qq,q) |
month
(mm,m) | week(ww,wk) |
day
(dd,dy) |
hour
(h) |
minute
(mi,n) |
second
(ss,s)| millisecond(ms)
startdate 和 enddate 参数是合法的日期表达式。
返回值:(enddate)-(startdate)
例:
select
datediff(
year
,getdate(),dateadd(
year
,2,getdate()))
--返回:2
SELECT
*
FROM
crm_contract
where
datediff(
month
,Subtime,getdate())=0
--查看crm_contract申请时间subtime是本月的数据
--4. datepart 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
--如果需要得到自己需要的日期,则需要讲日期时间格式化
SELECT
DATEPART(
year
, getdate())
as
\'年份\'
SELECT
DATEPART(
month
, getdate())
as
\'月份\'
SELECT
DATEPART(
day
, getdate())
as
\'日期\'
SELECT
DATEPART(week, getdate())
as
\'本年第几周数\'
SELECT
(DATEPART(weekday, getdate())-1)
as
\'今天是周几?\'
SELECT
DATEPART(
hour
, getdate())
as
\'小时\'
SELECT
DATEPART(
Minute
, getdate())
as
\'分钟\'
SELECT
DATEPART(
Second
, getdate())
as
\'秒时\'
--5. datename 返回代表指定日期的指定日期部分的字符串
SELECT
datename(weekday, getdate())
as
\'今天是星期几?\'
SELECT
datename(
month
,
convert
(
varchar
(10), getdate(),126))
as
\'今天是几月份?\'
SELECT
datename(
day
,
convert
(
varchar
(10), getdate(),126))
as
\'今天是几号?\'
SELECT
datename(
year
,
convert
(
varchar
(10), getdate(),126))
as
\'今年是哪年?\'
--上周周一
SELECT
DATEADD(wk, DATEDIFF(wk,0,getdate()),-7)
--上周周天
SELECT
DATEADD(wk, DATEDIFF(wk,0,getdate()),-1)
--.本周周一
SELECT
DATEADD(wk, DATEDIFF(wk,0,getdate()),0)
--.本周周天
select
dateadd(wk,datediff(wk,0,getdate()),6)
--下周周一
select
dateadd(wk,datediff(wk,0,getdate()),7)
--下周周天
select
dateadd(wk,datediff(wk,0,getdate()),13)
--1.本月第一天
SELECT
DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
--.本月最后一天
SELECT
dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))
--.本周星期一
SELECT
DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
--.本周星期天
select
dateadd(wk,datediff(wk,0,getdate()),6)
--.本年第一天
SELECT
DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
--.本年最后一天
SELECT
dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))
--.本季度第一天
SELECT
DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
--.当天的半夜
SELECT
DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)
--.上个月的最后一天
SELECT
dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
--.去年的最后一天
SELECT
dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
--.本月的第一个星期一
select
DATEADD(wk,
DATEDIFF(wk,0,dateadd(dd,6-datepart(
day
,getdate()),getdate())), 0)
以上是关于sql查询数据枚举判断转换及取时间间隔内数据的主要内容,如果未能解决你的问题,请参考以下文章
想用sql语句实现:查询出在最近10分钟(或一段时间区间内)插入数据库某个表的所有数据。
使用 T-SQL 将 OHLC-Stockmarket 数据分组到多个时间范围内