我有问题。 当我在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.
解决方案是什么?
谢谢!
答案 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)