Я создал таблицу разделов и пытаюсь запросить раздел, но не могу сделать это в sql server 2016. Может ли кто-нибудь сказать мне, где я ошибаюсь?
CREATE PARTITION FUNCTION [financialStatementPartition](datetime)
AS RANGE RIGHT FOR VALUES (N'2013-01-01T00:00:00.000', N'2014-01-01T00:00:00.000',
N'2015-01-01T00:00:00.000', N'2016-01-01T00:00:00.000',
N'2017-01-01T00:00:00.000')
GO
Схема таблицы
CREATE TABLE [dbo].[FinancialStatementIds]
(
[financialCollectionId] [int] NOT NULL,
[companyId] [int] NOT NULL,
[dataItemId] [int] NOT NULL,
[dataItemName] [varchar](200) NULL,
[dataItemvalue] [decimal](18, 0) NULL,
[unittypevalue] [int] NULL,
[fiscalyear] [int] NULL,
[fiscalquarter] [int] NULL,
[periodenddate] [datetime] NULL,
[filingdate] [datetime] NULL,
[restatementtypename] [varchar](200) NULL,
[latestforfinancialperiodflag] [bit] NULL,
[latestfilingforinstanceflag] [bit] NULL,
[currencyconversionflag] [int] NULL,
[currencyname] [varchar](200) NULL,
[periodtypename] [varchar](200) NULL
)
Запрос
SELECT *
FROM dbo.FinancialStatementIds
WHERE $PARTITION.financialStatementPartition(periodenddate) = '2013-01-01T00:00:00.000'
Ошибка
Ошибка преобразования при преобразовании значения varchar '2013-01-01T00:00:00.000' в тип данных int.
$PARTITION
возвращает номер раздела, а «2013-01-01T00:00:00.000» — это не число, верно? ;-) ПопробуйтеSELECT $PARTITION.financialStatementPartition('2013-01-01T00:00:00.000')
вместо этого - person Tyron78   schedule 26.10.2017