我创建了一个分区表并尝试查询分区但在sql server 2016中无法执行此操作。有人可以告诉我哪里出错了吗
dateadd(day, 1, getDate())
表架构
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
)
错误
将varchar值'2013-01-01T00:00:00.000'转换为数据类型int时转换失败。
答案 0 :(得分:0)
请改用以下查询:
SELECT *
FROM dbo.FinancialStatementIds
WHERE periodenddate = '20130101'
无论如何,该表仍未正确分区。您需要应用分区方案来连接表和分区函数。