在SQL Server 2012中使用TO_DATE

Use TO_DATE in sql server 2012

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

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

我收到错误消息:

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

解决办法是什么?

谢谢!


SQL Server没有TO_DATE函数。 您必须使用convert
看这里

1
2
3
4
5
6
7
8
9
-- 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);

对于您的特定情况,请使用:

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

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,例如

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

但是,可以像以下示例一样使用CAST / TRY_CAST:

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