Click here to Skip to main content
15,885,920 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I have a Table1(userid varchar(10),dt DateTime)

I want to insert row like this
declare @userId varchar(10)
declare @sql varchar(100)
declare @datetime varchar(10)
set @userId =2
set @datetime ='14/05/2015';
set @sql='insert into Table1('+'UserId'+','+'dt'+')'+ '
values('+@userId+','+''''+@datetime+'''' +')' 
       EXEC sp_executesql @sql 


Error is
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value
Posted
Updated 14-May-15 3:57am
v2
Comments
CHill60 14-May-15 9:50am    
What's wrong with what you have?
Maciej Los 14-May-15 10:29am    
What date format uses SQL server?

1 solution

Your dynamic query looks OK, but conversion between varchar data type to datetime data type failed, becuase the SQL Server uses different dateformat.

See: SET DATEFORMAT (instruction)[^]

SQL
declare @datetime varchar(10)
set @datetime ='14/05/2015'

SET DATEFORMAT dmy;
SELECT CONVERT(DATETIME, @datetime) AS MyDate


Now, you should be able to add daata.

Suggested correction for your query code:
SQL
declare @userId varchar(10)
declare @sql varchar(100)
declare @datetime varchar(10)
set @userId =2
set @datetime ='14/05/2015';
set @sql= 'SET DATEFORMAT dmy;' +
    'insert into Table1(UserId, dt)'+
    'values(' + @userId + ',''' + @datetime + ''')'
       EXEC sp_executesql @sql
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900