could not convert varchar to datetime in SQL server - sql-server

In my database i got problem when converting varchar to datetime due to different format of datetime as per below.
Conversion failed when converting date and/or time from character
string.
I have 2 select clause as per below
Select Getutcdate()
Select top 1 localmachinetime from perfmon
both return following format respectively
2012-05-28 06:54:45.753>
28-05-2012 03:03:07
and when i try to convert it to datetime using CAST then it gives me error in second case as per below.
The conversion of a varchar data type to a datetime data type resulted
in an out-of-range value.

You can use convert with a Date/Time style.
convert(datetime, '28-05-2012 03:03:07', 105)

Related

Convert value stored in a varchar to date time in sql

I have a date stored in varchar variable
I want to covert it to datetime format so that I could update the date to a column with type datetime
declare #dt_original as varchar(30)
set #dt_original original='1997-12-22 00:00:00.000'
I have tried
cast(#dt_original as date time)
Convert(datetime,#dt_original)
But nothing worked
Always throwing "conversion failed when converting date and/or time from character string"
The idea of using convert was correct, but you're missing the style pattern matching your string. In this case, it's 121:
CONVERT(DATETIME, #dt_original, 121)

MS SQL error : conversion of a varchar data type to a datetime data type resulted error

I am using MS SQL Server. One table column is defined as order_date varchar(25) and is stored in a format like 05/11/2015 07:54:16
In my select query, I am trying to convert that into a date format like (yyyy-mm-dd HH:MM:SS:000, e.g. 2015-05-11 08:03:10.000
I have tried with
select CONVERT(varchar(50), CAST(order_date AS datetime),121) from <table>
In my table I have around 500 records, but after fetching 10 records in my expected format, I get this error error:
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value
Is there any issue with my conversion?
There are a couple of problems here. The first is your data type choice, but I'll just repeat my comment for that: ""am trying to convert that into date format "* This is totally the wrong approach. Stop storing dates as a varchar use a date and time data type. The reason you have this error is because your poor data type choices. Fix that and get the presentation layer to work about the formatting."
Now, moving on. You have your expression below:
CONVERT(varchar(50), CAST(order_date AS datetime),121)
Firstly, as your value is a varchar, you need to tell SQL Server the format it is in; dd/MM/yyyy hh:mm:ss (I guess as '05/11' is ambigous)) is not unambiguous. What you have is the UK style, which is style 103:
CONVERT(datetime,'05/11/2015 07:54:16',103)
Now you can convert that to your ISO format:
CONVERT(varchar(23),CONVERT(datetime,'05/11/2015 07:54:16',103),121)
This returns the varchar value '2015-11-05 07:54:16.000'
I'd try to see what the value of order_date is at the time of the error. Perhaps what you assume to be a datetime string in mm/dd/yyyy... format is actually in dd/mm/yyyy....
I.e., the following outputs 2015-05-11 07:54:16.000 as my system is set to datetime format of mm/dd/yyyy.
declare #order_date varchar(100) = '05/11/2015 07:54:16'; -- mm/dd/yyyy...
print CONVERT(varchar(50), CAST(#order_date AS datetime),121);
the following throws an error: The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
set #order_date = '13/09/2015 07:54:16'; -- dd/mm/yyyy...
print CONVERT(varchar(50), CAST(#order_date AS datetime),121);

Convert varchar to datetime in sqlserver table

In SQL Server I have a column called "dateCreation" defined as varchar(50) and I would like to convert it to datetime type. If I change the column's type to datetime with the MS SQL Server Management Studio I get the following warning:
'atPropostes' table
- Warning: Data might be lost converting column 'dateCreation' from 'varchar(50)'.
Then If I execute this:
SELECT CONVERT(Datetime, dateCreation, 120) as dateCreation from atPropostes -- to convert it to Datetime
I get the following error:
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
What would be the best way to
(1) change the column type to datetime and
(2) convert all the registers from varchar(50) to Datetime type?
Thanks!
I assume that you are using SQL Server 2012
Try like this
SELECT TRY_CONVERT(DATETIME, dateCreation, 120) AS dateCreation
FROM atPropostes
Note: Please make sure that your date stored in varchar type have consistent date format. It should be something like yyyy-mm-dd or mm-dd-yyyy or.....

SQL Server Varchar to Datetime conversion

I have a varchar representing a datetime in this form :
dd-MM-yyyy HH:MI:SS AM
How can I convert it to datetime type ?
I have checked the list of standards of datetime here But I see no corresponding one to my format above.
Cast it directly
select CAST('10-02-2014 05:10:22 AM ' AS DATETIME)
Try this too..
select CONVERT(varchar(15),GETDATE(),105)+' '+CONVERT(varchar(30),CONVERT(VARCHAR,GETDATE(),108))+' '+SUBSTRING(CONVERT(varchar(30),CONVERT(VARCHAR,GETDATE(),100)),18,2)

The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value in SQL Server 2005

I have written a view in which date from table which is converted as
convert(varchar, date, 103)
and taken alias as DATE1 and then I have written query as follows :
select DATE1
from date_demo
WHERE MONTH(DATE1) = '12'
I want to retrieve only specific records with the month = 'december' that is 12
I got an error:
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
This is in SQL Server 2005 pls help me
As david suggested ,you should be using the date column instead of converting to string then back to datetime column.
However when you convert it back to datetime ,you need to specify the Date Time Style
select DATE1 from date_demo
WHERE MONTH(convert(datetime,DATE1,103))= '12'
Moreover you need to specify the length of varchar data type Read this artcile bad habits to kick declaring varchar without length

Resources