SQL Server如何将日期插入具有日期数据类型的列

时间:2018-09-11 09:06:52

标签: sql-server tsql date sql-server-2008-r2

我正在尝试将生日日期插入Sql Server 2008 r2中的列日期中 db我试图通过它,如下所示,但都没有解决

enter image description here

INSERT INTO t1 (birthday) VALUES (cast(08/12/2010 as date))
  

消息529,级别16,状态2,第1行从数据类型的显式转换   不允许int至今。

INSERT INTO t1 (birthday) VALUES (20100812)
  

操作符类型冲突:int与日期不兼容

INSERT INTO t1 (birthday) VALUES (20100812)

INSERT INTO t1 (birthday) VALUES ('20100812')
  

将数据类型varchar转换为数字时出错。

INSERT INTO t1 (birthday) VALUES ('2010-08-12')
  

将数据类型varchar转换为数字时出错。

4 个答案:

答案 0 :(得分:2)

从生成的编辑和错误消息来看,birthday列的数据类型似乎不是DATE

更正这一点,这将起作用

INSERT INTO t1 (birthday) VALUES (cast(08/12/2010 as date))

INSERT INTO t1 (birthday) VALUES ('20101210')

完整存储库-工作中

CREATE TABLE t1 (Birthday DATE)

INSERT INTO dbo.T1 ( Birthday)
VALUES ('20181010') 

INSERT INTO dbo.T1 ( Birthday)
VALUES (CAST('20181010' AS DATE) )

SELECT * FROM dbo.T1

Birthday
2018-10-10
2018-10-10

错误回购(1)-在INT列中输入日期值

CREATE TABLE t1 (Birthday INT)

INSERT INTO dbo.T1 ( Birthday)
VALUES (CAST('20181010' AS DATE) )
  

消息206,级别16,状态2,第7行,操作数类型冲突:日期为   与int不兼容

错误回购(2)-在NUMERIC列中输入日期值

CREATE TABLE t1 (Birthday NUMERIC)

INSERT INTO dbo.T1 ( Birthday)
VALUES (CAST('20181010' AS DATE) )
  

消息206,级别16,状态2,第7行,操作数类型冲突:日期为   与数字不兼容

错误回购(3)-在DATE列中输入一个INT值

CREATE TABLE t1 (Birthday DATE)

INSERT INTO dbo.T1 ( Birthday)
VALUES (20181010) 
  

消息206,级别16,状态2,第6行操作数类型冲突:int is   与日期不符

答案 1 :(得分:1)

快到了。试试

INSERT INTO t1 (birthday) VALUES ('2010-08-12')

答案 2 :(得分:1)

即使是一年前被问到,但如果您使用下面的代码,它仍然可以供其他参考: 插入t1(生日)值(转换(日期,'08 / 12/2010'))

日期也不应以ddmmyyyy格式插入,这是很常见的错误。

答案 3 :(得分:0)

您在插页中提到了两列,即ID和NUM。

打赌,您只提到了1个值:因此

INSERT INTO t1 (ID,NUM) VALUES (1, '20100812')
  • 修改后的问题的答案:

NUM 列的数据类型为数字,并且您正在尝试插入varchar

因此请更正NUM列的数据类型或将其插入正确的列。