在sql server 2012中使用TO_DATE

Mar*_*ego 4 sql-server-2012

我有个问题.当我在SQL Server 2012中执行下一句时:

TO_DATE('2011-11-09 00:00:00','YYYY-MM-DD HH24:MI:SS')
Run Code Online (Sandbox Code Playgroud)

我收到错误:

'TO_DATE' not is a name de function integrate recognized.
Run Code Online (Sandbox Code Playgroud)

解决办法是什么?

谢谢!

Jen*_*ens 8

SQL-Server没有任何TO_DATE 功能.你必须使用convert.看到这里

-- 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);
Run Code Online (Sandbox Code Playgroud)

根据您的具体情况使用:

convert(DATETIME, '2011-11-09 00:00:00')
Run Code Online (Sandbox Code Playgroud)


Use*_*ady 5

TO_DATE() 不是 SQL Server (T-SQL) 中的有效函数

替代方案取决于您使用的 SQL Server 版本

CAST() 或 CONVERT()可用于任何版本。从 SQL Server 2012 开始,可以使用TRY_CAST()TRY_CONVERT()。使用后一对的优点是,如果字符串在返回 null 时无法转换,则它们不会出错。

对于通常使用 CONVERT() 或 TRY_CONVERT() 的日期/时间字符串,因为您可以传递“样式”数字,其中 YYYY-MM-DD 是“样式”102,例如

SELECT TRY_CONVERT(DATE,'2017-01-21',102)
Run Code Online (Sandbox Code Playgroud)

但是,可以像这个例子一样使用 CAST/TRY_CAST:

SET DATEFORMAT mdy;  
SELECT TRY_CAST('12/31/2016' AS datetime)
Run Code Online (Sandbox Code Playgroud)