当前位置: 代码迷 >> Sql Server >> 求一段时间内去掉双休的搜索语句
  详细解决方案

求一段时间内去掉双休的搜索语句

热度:32   发布时间:2016-04-24 09:16:11.0
求一段时间内去除双休的搜索语句
现在没有排除周末的语句我如下
SELECT  * FROM  TABLE_NAME
WHERE   (LOGTIME BETWEEN CAST('2015-01-01 00:00:00' AS datetime) AND CAST('2015-01-31 23:59:59' AS datetime))
现在要过滤掉 1月份里所有 周六和周日的几天不知道用那个函数?


追加一个问题
一同事设计表时候 把datetime格式做成了 varchar 比如2015年1月1日21点59分59秒 数据是 20150101215959
如果这样的话 如何把字符串格式转成 datetime格式 然后用 between搜索一段时间呢?


------解决思路----------------------
SET DATEFIRST 1;
SELECT  * FROM  TABLE_NAME
WHERE(LOGTIME BETWEEN CAST('2015-01-01 00:00:00' AS datetime) AND CAST('2015-01-31 23:59:59' AS datetime))
AND DATEPART(WEEKDAY,LOGTIME)<6

------解决思路----------------------
TO 追加问题
写个update转换一下吧
declare @logtime varchar(10) = SUBSTRING('20150101215959',1,8)
set @logtime = SUBSTRING(@logtime,1,4)+'-'+SUBSTRING(@logtime,5,2)+'-'+SUBSTRING(@logtime,7,7) 
print @logtime
------解决思路----------------------
TO 追加问题
你可以写个函数封装一下,也可以一大串的处理方式

DECLARE @T VARCHAR(14)
SET @T='20150330121212'
SELECT CAST(LEFT(@T,8)+' '+SUBSTRING(@T,9,2)+':'+SUBSTRING(@T,11,2)+':'+SUBSTRING(@T,13,2) AS DATETIME)
@T换成你的列名,那串红色的转换方式
  相关解决方案