相同的SQL查询-提供不同的输出

相同的SQL查询-提供不同的输出,sql,excel,Sql,Excel,在SQL中,我在一个日期范围内查询数据库,但输出给出了4年后的日期。我正在使用Excel-获取外部数据向导 SELECT * ,convert(varchar(3), DATENAME(MONTH, CreditNote_Date)) as Fin_Month ,datepart(wk, CreditNote_Date) as as Fin_Week FROM --blah WHERE -- blah AND (CreditNote_Date between convert (datetime

在SQL中,我在一个日期范围内查询数据库,但输出给出了4年后的日期。我正在使用Excel-获取外部数据向导

SELECT *
,convert(varchar(3), DATENAME(MONTH, CreditNote_Date)) as Fin_Month
,datepart(wk, CreditNote_Date) as as Fin_Week
FROM 
--blah
WHERE -- blah
AND (CreditNote_Date between convert (datetime, '2014-12-29 00:00:00', 102) 
and convert (datetime, '2015-12-27 00:00:00', 102))
但是,当在SQL Server Management Studio中执行相同的查询时,我得到了正确的2014/2015日期。它们似乎对应于同一行。由于保密的原因,一些行已经被注释掉了,但请询问是否需要更多信息


听起来有点奇怪,但如果您使用excel,请尝试替换您正在使用的任何日期转换,以匹配以下内容

select cast(getdate() as varchar(10))

我过去在excel日期方面遇到过不少麻烦,发现excel隐式转换这种格式非常好。

您的日期是如何保存在数据库中的?数据类型是
smalldatetime
-这就是您要的吗?@hgeop。不要在日期时间值中使用
between
。我建议您阅读此博客,然后相应地编写SQL。这样至少可以防止将来出现问题。当今天的日期是2015年6月11日时,格式就像dd/mm/yyyy,但也包括小时、分钟、秒等。。。因此,在sql server management studio正常渲染数据时,excel可能会在转换数据时遇到问题。这很奇怪-我在另一个excel文件中有完全相同的查询,并且工作正常。我将该表粘贴到我需要的文件中,并生成2019年日期…@hgeop,这表明excel中的目标列格式错误。尝试将目标设置为文本格式。