使用 DATEADD 转换日期时转换失败
Conversion failed when converting date with DATEADD
我正在使用这个查询:
INSERT INTO Registro_EQ (Codigo, Fechtran, Fechaini, Fechaexp, IDCONF, Descripcion, Marca, Modelo, Serie, ConLista, Porcentaje_cl, SinLista, Porcentaje_sl, Movible,
Porcentaje_mv, Edificio, Porcentaje_ed, Automatico, Exceso, Porcentaje_ex, Asignacion, Estatus, IDUsuario)
SELECT DATEADD(year, 1, Fechaini) as Fecha, DATEADD(year, 1, Fechaexp) as Fecha2,
[Codigo] , [Fechtran], [IDCONF], [Descripcion], [Marca], [Modelo], [Serie], [ConLista], [Porcentaje_cl], [SinLista], [Porcentaje_sl], [Movible],
[Porcentaje_mv], [Edificio], [Porcentaje_ed], [Automatico], [Exceso], [Porcentaje_ex], [Asignacion], [Estatus], [IDUsuario]
FROM [Pru].[dbo].[Registro_EQ]
WHERE Fechaini >= '2016-01-01' AND Fechaini < '2017-01-01'
当我 运行 向我发送以下消息时:
Conversion failed when converting date and/or time from character string.
我知道是日期时间,但我找不到答案。
您的问题最可能的原因是 Fechaini
存储为字符串而不是日期。这是错误的数据类型。您应该使用适当的 built-in 数据类型,除非您有充分的理由不这样做。
在 SQL Server 2012+ 中,您可以看到导致问题的值:
select Fechaini
from [Pru].[dbo].[Registro_EQ]
where try_convert(date, Fechaini) is null;
然后您应该修复您的数据。最好的方法是将数据更改为正确的类型(日期或日期时间类型)。
Insert Into 的顺序是 Codigo、Fechtran、Fechaini、Fechaexp、IDCONF,在 Select 中的顺序不同,Fecha、Fecha2、Codigo、Fechtran、IDCONF。
所以您很可能将数据插入了错误的列。
1st 在没有插入的情况下执行 select 查询,如果错误消失,那么您将错误的格式日期从 select 插入到您的目标 table
2 如果您从 select 查询中得到错误,您必须确保字段 "fechaini" 的格式是日期,如果不是,请确保包含的所有数据都是日期格式并且不应该包含空字符串。
我正在使用这个查询:
INSERT INTO Registro_EQ (Codigo, Fechtran, Fechaini, Fechaexp, IDCONF, Descripcion, Marca, Modelo, Serie, ConLista, Porcentaje_cl, SinLista, Porcentaje_sl, Movible,
Porcentaje_mv, Edificio, Porcentaje_ed, Automatico, Exceso, Porcentaje_ex, Asignacion, Estatus, IDUsuario)
SELECT DATEADD(year, 1, Fechaini) as Fecha, DATEADD(year, 1, Fechaexp) as Fecha2,
[Codigo] , [Fechtran], [IDCONF], [Descripcion], [Marca], [Modelo], [Serie], [ConLista], [Porcentaje_cl], [SinLista], [Porcentaje_sl], [Movible],
[Porcentaje_mv], [Edificio], [Porcentaje_ed], [Automatico], [Exceso], [Porcentaje_ex], [Asignacion], [Estatus], [IDUsuario]
FROM [Pru].[dbo].[Registro_EQ]
WHERE Fechaini >= '2016-01-01' AND Fechaini < '2017-01-01'
当我 运行 向我发送以下消息时:
Conversion failed when converting date and/or time from character string.
我知道是日期时间,但我找不到答案。
您的问题最可能的原因是 Fechaini
存储为字符串而不是日期。这是错误的数据类型。您应该使用适当的 built-in 数据类型,除非您有充分的理由不这样做。
在 SQL Server 2012+ 中,您可以看到导致问题的值:
select Fechaini
from [Pru].[dbo].[Registro_EQ]
where try_convert(date, Fechaini) is null;
然后您应该修复您的数据。最好的方法是将数据更改为正确的类型(日期或日期时间类型)。
Insert Into 的顺序是 Codigo、Fechtran、Fechaini、Fechaexp、IDCONF,在 Select 中的顺序不同,Fecha、Fecha2、Codigo、Fechtran、IDCONF。
所以您很可能将数据插入了错误的列。
1st 在没有插入的情况下执行 select 查询,如果错误消失,那么您将错误的格式日期从 select 插入到您的目标 table
2 如果您从 select 查询中得到错误,您必须确保字段 "fechaini" 的格式是日期,如果不是,请确保包含的所有数据都是日期格式并且不应该包含空字符串。