查询SQL Server中的分区表时出错

时间:2017-10-26 06:41:52

标签: sql-server sql-server-2016

我创建了一个分区表并尝试查询分区但在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时转换失败。

1 个答案:

答案 0 :(得分:0)

请改用以下查询:

SELECT * 
FROM dbo.FinancialStatementIds
WHERE periodenddate = '20130101'

无论如何,该表仍未正确分区。您需要应用分区方案来连接表和分区函数。