2015-06-11 6 views
0

В SQL Я запрашиваю базу данных между диапазоном дат, но вывод даёт даты через 4 года. Я использую Excel - мастер Get External Data.Тот же SQL-запрос - предоставление другого вывода

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. Кажется, что они соответствуют тем же строкам. Некоторые строки были прокомментированы из-за конфиденциальности, но спросите, требуется ли дополнительная информация.

Wrong year/dates returned correct dates reutnred

+0

Как ваши даты сохраняются в базе данных? –

+0

Тип данных «smalldatetime» - это то, о чем вы просите? – hgeop

+0

@hgeop. , , Не используйте 'between' с значениями datetime. Я бы предложил вам прочитать этот блог, http://sqlblog.com/blogs/aaron_bertrand/archive/2011/10/19/what-do-between-and-the-devil-have-in-common.aspx, а затем закодируйте свой SQL соответственно. По крайней мере, вы предотвратите будущие проблемы. Формат –

ответ

0

Звучит немного дурацкий, но если вы работаете с Excel, попробуйте заменить все, что дата преобразования используется, чтобы соответствовать ниже.

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

У меня был справедливый бит проблемы с датами первенствовать в прошлом, и обнаружил, первенствует неявно преобразует этот формат довольно хорошо.

+0

Это очень странно - у меня есть тот же самый запрос в другом файле Excel, и он работает правильно. Я вставляю эту таблицу в файл, в котором я нуждаюсь, и датируются даты 2019 ... – hgeop

+0

@hgeop Это означает, что столбец назначения в excel отформатирован неправильно. Попробуйте форматировать пункт назначения как текст. –

Смежные вопросы