2016-10-13 6 views
0
SELECT 
    fcb.PharmacyKey as PharmID 
    ,fcb.DateKeY as UploadDate 
    ,fcb.RecordSource as Description 
    ,fcb.Amount 
FROM 
    dbo.FactCheckBookData fcb 
WHERE 
    fcb.RecordSource in ('BeginningBalance') 
    AND convert(datetime, left(fcb.DateKey, 8),101) = DATEADD(MONTH, DATEDIFF(MONTH, 0, Convert(varchar(8), getdate(), 112)), 0) 

Ошибка:SQL Server 2014 пытается создать индексированную мнение, однако я получаю следующую ошибку

Cannot create index on view 'dbo.view' because the view uses an implicit conversion from string to datetime or smalldatetime. Use an explicit CONVERT with a deterministic style value.

+0

'Преобразование (VARCHAR (8), GETDATE(), 112) ', почему ?, вы должны просто использовать' GETDATE() ' – Lamak

+0

Мне нужен вид для фильтрации на первый день месяца, поэтому почему getdate() не будет работать. – user2671286

+0

@ Lamak говорит, что нет необходимости конвертировать дату в функцию 'DATEDIFF' (например, просто напишите' DATEDIFF (MONTH, 0, GETDATE()) '), но я сомневаюсь, что это является причиной вашей проблемы. – ZLK

ответ

0

Вы можете добавить один день к концу предыдущего месяца.

SELECT 
    fcb.PharmacyKey as PharmID 
    ,fcb.DateKeY as UploadDate 
    ,fcb.RecordSource as Description 
    ,fcb.Amount 
FROM dbo.FactCheckBookData fcb 
WHERE fcb.RecordSource in ('BeginningBalance') 
AND convert(datetime,left(fcb.DateKey,8),101) = 
    DateAdd (Day, 1, EOMONTH(getdate(), -1)) 
0

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

DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()),0) 

Однако, если вы измените свой код, ошибка изменится

Cannot create index on view 'someView'. The function 'getdate' yields nondeterministic results. Use a deterministic system function, or modify the user-defined function to return deterministic results. 

Потому что GETDATE() является недетерминированным и поэтому не может использоваться в индексированном виде.

https://msdn.microsoft.com/en-AU/library/ms191432.aspx

https://msdn.microsoft.com/en-us/library/ms178091.aspx

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

  • Нет связанных вопросов^_^