我在完成一个简单的任务上经历了痛苦的时刻。我想每个月对每个6个月的数据进行切片。我没有任何输出。我的SQL技能很差。我搜索了很多解决方案,他们给了我一些想法,但我无能为力。
以下是我的尝试:
SELECT TOP 10000 CONVERT(VARCHAR,DATEADD(HOUR,-4,DATEADD(s, ch.dateTimeOrigination, '19700101')), 121) as CallDate
FROM [dbo].[CallData] AS ch
WHERE LEN(ch.callingPartyNumber) = 4 AND
CONVERT(VARCHAR,DATEADD(HOUR,-4,DATEADD(s, ch.dateTimeOrigination, '19700101')), 121) BETWEEN CONVERT(VARCHAR(10), GETDATE(), 110) AND CONVERT(VARCHAR(10), DATEADD(month, -6, GETDATE()), 110)
该表肯定包含我要查询的时间段的数据。所以我不确定为什么这没有给我任何输出。非常感谢您的帮助。谢谢。
我相信您的BETWEEN
价值观是落后的。
编辑:子句CONVERT
中的WHERE
语句也是不同的格式,因此当您比较varchars时,比较失败。您应该改用DATETIME
。
试试这个:
SELECT TOP 10000
CONVERT(VARCHAR,DATEADD(HOUR,-4,DATEADD(s, ch.dateTimeOrigination, '19700101')), 121) as CallDate
FROM [dbo].[CallData] AS ch
WHERE LEN(ch.callingPartyNumber) = 4 AND
CAST(DATEADD(HOUR,-4,DATEADD(s, ch.dateTimeOrigination, '19700101')) AS DATETIME) BETWEEN DATEADD(month, -6, GETDATE()) AND GETDATE()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句