在完成一项简单的任务时,我经历了一段痛苦的时间。我想每个月每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)
这个表肯定有我想要查询的时间段的数据。所以我不确定为什么这没有给我任何输出。我将非常感谢你的帮助。谢谢。
发布于 2018-01-04 16:51:44
我相信你的BETWEEN
值是倒退的。
编辑:WHERE
子句中的CONVERT
语句也是不同的格式,所以当您比较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()
https://stackoverflow.com/questions/48099663
复制相似问题