SQL INSERT INTO 语法 [重复]

Posted

技术标签:

【中文标题】SQL INSERT INTO 语法 [重复]【英文标题】:SQL INSERT INTO syntax [duplicate] 【发布时间】:2016-03-23 13:29:02 【问题描述】:

对不起,如果这有点低级,但我是在 SQL Server management Studio 上学习 SQL 并尝试将一些虚拟数据添加到我正在使用以下数据库的数据库的学生

INSERT INTO dbo.Bookings (bookingid ,bookingdate ,customerid ,airportid ,outboundflight ,dateout ,timeout ,location ,inboundflight ,datein ,timein)

VALUES (1, 20160225, 2, 'STN', 'JJ2305', 20160316, 0950 , null, 'JJ2306', 20160416, 1800 )

但我收到此错误消息:

消息: Operand type ***: int is incompatible with date

所以我检查了数据库,这是结构的打印输出

       (<bookingid, nchar(10),>
       ,<bookingdate, date,>
       ,<customerid, int,>
       ,<airportid, nvarchar(5),>
       ,<outboundflight, nchar(10),>
       ,<dateout, date,>
       ,<timeout, time(7),>
       ,<location, nchar(10),>
       ,<inboundflight, nchar(10),>
       ,<datein, date,>
       ,<timein, time(7)>

)

正如您所见,我试图将日期添加到的日期列中没有一个是 int ,实际上只有一个 int 并且应该包含 '2'

任何人都可以让我摆脱痛苦,因为我已经尝试了两天(断断续续地)理解/解决这个问题,而且作业截止日期迫在眉睫!

谢谢

【问题讨论】:

David,检查了一个,这似乎与日期和 int 之间的输入类型冲突有所不同,尽管我看不出该冲突在哪里是唯一的列int 是第三个,正如我在问题中所说,应该输入 2。 【参考方案1】:

缺少引号。

试试

值(1、'20160225'、2、'STN'、'JJ2305'、'20160316'、0950、空值、'JJ2306'、'20160416'、1800)

【讨论】:

将您的行复制到查询中,这就是我得到的!消息 206,级别 16,状态 2,第 4 行操作数类型冲突:int 与时间不兼容 实际上吸收速度有点慢,但您的回答修复了第一个错误,如日期,但随后抛出了下一个错误,即时间,所以我按照您缺少的引号答案在日期前后添加了它们然后它起作用了(尽管时间格式似乎也不正确)但我现在在该表中有一行 - 非常感谢。【参考方案2】:

您必须在以下内容中为数据类型 date 提供引号 ''

INSERT INTO dbo.Bookings (bookingid ,bookingdate ,customerid ,airportid ,outboundflight ,dateout ,timeout ,location ,inboundflight ,datein ,timein)

VALUES (1, 20160225, 2, 'STN', 'JJ2305', 20160316, 0950 , null, 'JJ2306', '20160416', 1800 )

【讨论】:

以上是关于SQL INSERT INTO 语法 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

避免在 SQL Server 中的 INSERT INTO SELECT 查询中重复

INSERT INTO 语句的语法错误

SQL SELECT INSERT INTO 生成唯一 ID

INSERT INTO 语句的语法错误

Spark SQL:INSERT INTO 语句语法

INSERT INTO 语句的语法错误