Use TO_DATE in sql server 2012

烂漫一生 提交于 2019-12-04 04:06:38

问题


I have a problem. When I execute the next sentence in the SQL server 2012:

TO_DATE('2011-11-09 00:00:00','YYYY-MM-DD HH24:MI:SS')

I receive to the error:

'TO_DATE' not is a name de function integrate recognized.

What is the solution?

Thanks!


回答1:


SQL-Server has no TO_DATE function. You have to use convert. See here

-- Specify a datetime string and its exact format
SELECT TO_DATE('2012-06-05', 'YYYY-MM-DD') FROM dual;


-- Specify a datetime string and style 102 (ANSI format), raises an error if conversion fails
  SELECT CONVERT(DATETIME, '2012-06-05', 102);

  -- TRY_CONVERT available since SQL Server 2012 (returns NULL if conversion fails)
  SELECT TRY_CONVERT(DATETIME, '2012-06-05', 102);

For your specific case use:

convert(DATETIME, '2011-11-09 00:00:00')



回答2:


TO_DATE() isn't a valid function in SQL Server (T-SQL)

The alternatives depend on what version of SQL Server you are using

CAST() or CONVERT() may be used in any version. Starting with SQL Server 2012 onward one can use TRY_CAST() or TRY_CONVERT(). The advantage of using the latter pair is they do not error if the strings cannot be converted when they return null instead.

For date/time strings generally using CONVERT() or TRY_CONVERT() is used as you can pass "style" numbers where YYYY-MM-DD is "style" 102 e.g.

SELECT TRY_CONVERT(DATE,'2017-01-21',102)

However it is possible to use CAST/TRY_CAST like this example:

SET DATEFORMAT mdy;  
SELECT TRY_CAST('12/31/2016' AS datetime)


来源:https://stackoverflow.com/questions/45074493/use-to-date-in-sql-server-2012

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!