与SQL中的日期转换不一致

与SQL中的日期转换不一致,sql,sql-server,Sql,Sql Server,我在将日期从Varchar转换为Date时遇到了一个奇怪的问题,我希望有人能向我解释为什么会发生这种情况 现在我有一些临时表,我使用批量插入将CSV文件插入其中。这些临时表以Varchar()的形式接收所有内容,从那里我将数据插入到它们的最终表中。现在,对于大多数数据,我使用了Cast()函数将字段从varchar()转换为其最终类型所需的任何类型,但是在一些日期字段上,我简单地将最终表更改为date类型,而不使用Cast()函数。奇怪的是,只需将最后一个表设置为Date类型,就可以很好地进行转

我在将日期从
Varchar
转换为
Date
时遇到了一个奇怪的问题,我希望有人能向我解释为什么会发生这种情况

现在我有一些临时表,我使用
批量插入
将CSV文件插入其中。这些临时表以
Varchar()
的形式接收所有内容,从那里我将数据插入到它们的最终表中。现在,对于大多数数据,我使用了
Cast()
函数将字段从
varchar()
转换为其最终类型所需的任何类型,但是在一些日期字段上,我简单地将最终表更改为
date
类型,而不使用
Cast()
函数。奇怪的是,只需将最后一个表设置为
Date
类型,就可以很好地进行转换,但是当尝试对其他表之一执行此操作时,我得到了一个转换失败的错误


是否存在日期转换不需要
convert()
Cast()函数的情况?我对这些插入查询并没有做任何疯狂的事情,只是简单地将数据从一个表插入到下一个表。为什么在一种情况下更改最终表格字段类型足以转换日期,而在另一种情况下则不够?同样,我们在这里讨论的是简单的
Insert
语句。

格式为
'YYYYMMDD'
的日期应该可以很好地转换,即使没有
cast()
。所有这些日期的格式都是MMDDYYYY@Jcmoney1010然后是一种模棱两可的格式,你需要用
CONVERT
@Lamak明确地指定它。虽然我并不反对你的说法,但我不明白为什么它在一种情况下仍然会转换日期,而在另一种情况下却不会。12312015不像01022015那样模棱两可。它是否转换月日为13或更高的日期?