【发布时间】:2016-01-21 07:55:09
【问题描述】:
我遇到了一个应该在表中插入行的查询问题。
该表具有以下属性:
CREATE TABLE [dbo].[New_Table](
[ID] [nvarchar](32) NOT NULL,
[Position] [smallint] NOT NULL,
[...]
[OrderDate] [datetime] NULL,
[...]
CONSTRAINT [PK_New_Table] PRIMARY KEY CLUSTERED
(
[ID] ASC,
[Position] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
OrderDate 列是表中唯一的日期时间列。
OrderDate 检索自下表:
CREATE TABLE [dbo].[Old_Table](
[ID] [nvarchar](32) NOT NULL,
[Number] [nvarchar](15) NOT NULL,
[...]
[Date] [datetime] NULL,
[...]
CONSTRAINT [PK_Old_Table] PRIMARY KEY CLUSTERED
(
[ID_A_Kopf] ASC,
[Number] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
查询很简单:
INSERT INTO [dbo].[New_Table]
SELECT DISTINCT
DataTable.ID,
DataTable.Position,
DataTable.System,
b.Date
FROM
DataTable LEFT JOIN
( SELECT
OldTable.ID,
OldTable.Date
FROM
OldTable
WHERE
OldTable.Number = <Condition>) b ON DataTable.ID = b.ID
与DataTable 的联接没有其他日期时间列。
当我尝试运行查询时,我收到以下错误消息:
Meldung 241, Ebene 16, Status 1, Zeile 2
Fehler beim Konvertieren einer Zeichenfolge in ein Datum und/oder eine Uhrzeit.
翻译为Conversion failed when converting date and/or time from character string。
我试图解决一个使用 IsDate 函数的情况,但它也不起作用。可以使用 NULL 值,如 New_Table 的定义表中所示。
所有这些都在运行:
Microsoft SQL Server Management Studio 11.0.2100.60
Microsoft Data Access Components (MDAC) 6.1.7601.17514
Microsoft MSXML 2.6 3.0 4.0 6.0
Microsoft Internet Explorer 9.10.9200.17054
Microsoft .NET Framework 4.0.30319.34209
Betriebssystem 6.1.7601
【问题讨论】:
-
在插入之前测试您的代码
SELECT DISTINCT ...:b.date 列的格式? -
我们没有听说要修复您的错误。尝试插入指定的列名。
标签: sql sql-server datetime type-conversion