Ще трябва да добавите изчислена колона
Alter Table BEER_HERE Add Column XBEER_DATE As dbo.TRUNCATE_DATE(BEER_DATE)
След това можете да го индексирате, както очаквате.
Вашата функция обаче трябва да бъде детерминистична и прецизна, както е дефинирано в http://msdn.microsoft.com/en-us/library/ms189292(v=sql.90).aspx . Вашата функция трябва да отговаря на тези изисквания, но може да се наложи да добавите With SchemaBinding към дефиницията на функцията.
Може също да можете да използвате изглед
Create View V_BEER_HERE As Select BEER_CODE, BEER_DATE, dbo.TRUNCATE_DATE(BEER_DATE) As XBEER_DATE From BEER_HERE
Create Unique Clustered Index PK_V_BEER_HERE On V_BEER_HERE (BEER_CODE)
Create Index I_XBEER_DATE On V_BEER_HERE (XBEER_DATE)
Нещата, които вмъкват, пишат в таблицата, нещата, които четат, четат от изгледа. Това зависи от това, че BEER_CODE е първичен ключ.
SQL Server няма базирани на функции индекси, както Oracle прави.