Date类型列并在其中插入值

时间:2016-09-15 06:02:39

标签: sql sql-server type-conversion

您好我创建了一个表格,其中一列为date类型,也可用作 PK 。我尝试将值2009-01-07插入此列并出现此错误。不是日期默认格式yyyy-mm-dd?我不明白这一点。

Msg 241, Level 16, State 1, Line 3
Conversion failed when converting date and/or time from character string.

这是我的疑问:

INSERT INTO Table_Name
Values ('2009-01-07', other column values)

2 个答案:

答案 0 :(得分:0)

您的价值'2009-01-07'应该转换。

日期文字总是麻烦的深层来源......最好是,使用

  • 未分离:20090107
  • ODBC:{d'2009-01-07'}
  • ISO8601:2009-01-07T00:00:00

但您的格式是短ISO 8601 并且应该有效...

一些可能的原因:

  • VALUES列表
  • 中的其他值
  • 触发器
  • 约束
  • 作为 a_horse_with_no_name 在评论中说明:INSERT INTO Table(col1, col2, ...)之后没有列列表存在很大的风险,以不同的顺序陈述您的值,从而将值与错误的列配对... < / LI>
  • 无效(但好看的)日期,例如2016-06-31

或者 - 众所周知 - SQL-Server的问题。有时执行的顺序绝对不是人们所期望的。转换错误有几个问题......

你可以尝试什么

  • 使用ODBC格式(立即视为DATETIME
  • 使用此值DECLARE变量并将其放置到位

答案 1 :(得分:0)

谢谢大家的快速回复。我阅读并尝试了所有这些并找出原因。

  1. &#39; 2009-01-07&#39;可以使用&#34;日期&#34;插入到列中作为数据类型,如果没有CONSTRAINT有问题;
  2. 我的问题是由该列的CHECK约束引起的。    最初我将CONSTRAINT设置为    Column_Name =&#39;星期三&#39;    我修改它之后    DATEName(dw,[Column_Name])=&#39;星期三&#39;    插入开始起作用。
  3. 再次感谢。