6

MySQL has a function called STR_TO_DATE, that converts a string to date.

Question:

Is there a similar function in SQL Server?

OMG Ponies
  • 314,254
  • 77
  • 507
  • 490
Alex Gordon
  • 54,010
  • 276
  • 644
  • 1,024
  • 1
    possible duplicate of [Sql Server string to date conversion](http://stackoverflow.com/questions/207190/sql-server-string-to-date-conversion) – OMG Ponies Aug 19 '10 at 19:44

6 Answers6

9

If you need to parse a particular format, use CONVERT(datetime, @mystring, @format). Use this as a reference: http://www.sqlusa.com/bestpractices/datetimeconversion/

Aaron D
  • 5,751
  • 1
  • 34
  • 50
7

What if the string is 7/7/2010?

Then use CONVERT with either 101 (mm/dd/yy) or 103 (dd/mm/yy) depending on what you want:

SELECT CONVERT(DATE, '7/7/2010', 103)

Result:

2010-07-07
Mark Byers
  • 767,688
  • 176
  • 1,542
  • 1,434
2
CAST(<string> AS DATETIME)
Tom H
  • 45,807
  • 14
  • 84
  • 124
2

Use CAST.

declare @MyString varchar(10)
declare @MyDate datetime

set @MyString = '2010-08-19'
set @MyDate = cast(@MyString as datetime)
select @MyDate
Joe Stefanelli
  • 128,689
  • 18
  • 228
  • 231
1

Here is a good example:

declare @myDate datetime
set @myDate = '06/09/2017'

select concat(convert(varchar(20), @myDate,101), ' -- ', 
              convert(varchar(20), @myDate,103), ' -- ',
              convert(varchar(20), @myDate,6))

This is what you get, depending on 101 or 103 or 6:

09/06/2017 -- 06/09/2017 -- 06 Sep 17

A good summary of types of dates is here - https://www.w3schools.com/sql/func_convert.asp

Vityata
  • 41,328
  • 7
  • 50
  • 86
-1

On MSSQL: select cast('2012/06/12 10:32AM' as datetime);

You will get it: 2012-06-12 10:32:00.000

ndukan
  • 64
  • 2