在sql server 2012中使用TO_DATE

时间:2017-07-13 07:47:34

标签: sql-server-2012

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

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

我收到错误:

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

解决方案是什么?

谢谢!

3 个答案:

答案 0 :(得分:8)

SQL-Server没有TO_DATE功能。您必须使用convert。 见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);

针对您的具体案例:

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

答案 1 :(得分:2)

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

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

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

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

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

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

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

答案 2 :(得分:0)

CONVERT在Sql Server中可以完成与TO_DATE在Oracle中相同的工作

SELECT CONVERT(date, yourDate ,104)