Converting MySQL STR_TO_DATE function

MySQL provides STR_TO_DATE() standard function which convert string into date type. SSMA does not support conversion of STR_TO_DATE() function and when it encounters call to the function, SSMA generates a conversion error message "M2SS0201: MySQL standard function STR_TO_DATE is not supported in current SSMA version"

You can use SQL Server's CONVERT function to replace STR_TO_DATE. Consider the following example:

MySQL SQL Server
SELECT STR_TO_DATE('06/15/2011', '%m/%d/%Y'); SELECT CONVERT(datetime, '06/15/2011', 101)

 

CONVERT function uses three arguments, the first is the datatype we are converting the string to, second argument is the string value, and the last argument is style. Refer to the table below to determine the style value to use:

Date Format With century (yyyy) Style Value Date Format Without century (yy) Style Value

mm/dd/yyyy

101

mm/dd/yy

1

yyyy.mm.dd

102

yy.mm.dd

2

dd/mm/yyyy

103

dd/mm/yy

3

dd.mm.yyyy

104

dd.mm.yy

4

dd-mm-yyyy

105

dd-mm-yy

5

dd mon yyyy

106

dd mon yy

6

Mon dd, yyyy

107

Mon dd, yy

7

mm-dd-yyyy

110

mm-dd-yy

10

yyyy/mm/dd

111

yy/mm/dd

11

yyyymmdd

112

yymmdd

12 

yyyy-mm-dd hh:mi:ss(24h)

120

yyyy-mm-dd hh:mi:ss.mmm(24h)

121

yyyy-mm-dd Thh:mi:ss.mmm(no spaces)

126

dd mon yyyy hh:mi:ss:mmmAM

130

dd/mm/yy hh:mi:ss:mmmAM

131

mon dd yyyy hh:mi:ss:mmmAM (or PM)

109

dd mon yyyy hh:mi:ss:mmm(24h)

113

mon dd yyyy hh:miAM (or PM)

100

hh:mi:ss

108

Limitation

CONVERT function requires the value to be a valid date. For example:

SELECT CONVERT(datetime, '00/00/0000', 101)

--Error Message: “The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.”

SELECT convert(datetime, 'wrong value', 101)

--Msg 241, Level 16, State 1, Line 1. “Conversion failed when converting date and/or time from character string.”

Additional error handling or input validation may be required for such situation.

Reference

Comments

  • Anonymous
    June 23, 2014
    SELECT STR_TO_DATE('2013/14/12 12:15:07 AM' ,'%Y/%d/%m'); when i excute the Above query "12/14/2013 12:00:00 AM" this result came.... why time stamp is not formatted?

  • Anonymous
    June 11, 2015
    The SQL Concat function is utilized to associate two strings to outline a particular string. www.inoracle.com/sql-character-functions-with-examples