【问题标题】:Insert values into datetime column from other datetime column将值从其他日期时间列插入日期时间列
【发布时间】: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


【解决方案1】:

我很确定您将日期/时间列放在目标表中的错误位置。

【讨论】:

  • 这实际上是问题的解决方案。
猜你喜欢
  • 2012-01-23
  • 2021-10-22
  • 1970-01-01
  • 1970-01-01
  • 2016-04-01
  • 2019-11-02
  • 1970-01-01
  • 2013-11-29
  • 1970-01-01
相关资源
最近更新 更多