SQL 'DATE' 不是可识别的内置函数名称
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/20973272/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
'DATE' is not a recognized built-in function name
提问by sajjad
I wish to find all records of the current day. I have a field Date of type DATE. I am getting error on sql server
我希望找到当天的所有记录。我有一个日期类型的字段日期。我在 sql server 上遇到错误
'DATE' is not a recognized built-in function name.
on this line
在这条线上
(DATE(EnterDate) = CURDATE() )
回答by D Stanley
As the error states, there is no DATE
functionin SQL Server 2008 or 2012 (you tagged both so I'm not sure which you're targeting). You can, however, cast to a date
type in SQL Server 2008 and above:
正如错误所述,SQL Server 2008 或 2012 中没有任何DATE
功能(您标记了两者,所以我不确定您的目标是哪个)。但是,您可以转换为date
SQL Server 2008 及更高版本中的类型:
WHERE EnterDate = CONVERT(date,GETDATE())
Note that there's no CURDATE
function either, so I've translated that to GETDATE()
请注意,也没有CURDATE
函数,所以我已将其翻译为GETDATE()
回答by M.Ali
Use the following condition in your where cluase
在您的 where 条款中使用以下条件
WHERE CAST(DateColumn AS DATE) = CAST(GETDATE() AS DATE)
^------------ Your Column Name with `Date` or 'DateTime' data type
CURDATE()
is a mysql function, In Sql-Server we have GETDATE()
function to get current date and time.
CURDATE()
是一个mysql函数,在Sql-Server中我们有GETDATE()
获取当前日期和时间的函数。
回答by sajjad
More efficient one is
更有效的一种是
WHERE EnterDate > DATEADD(dd, -1, DATEDIFF(dd, 0, GETDATE()))
Thanks @D Stanley @marc_S and @Mihai
谢谢@D Stanley @marc_S 和@Mihai
回答by Pradeep Samaranayake
This is not the exact answer but example how to trim the time part from the date time variable
这不是确切的答案,而是如何从日期时间变量中修剪时间部分的示例
CONVERT(VARCHAR(10),date_manufactured,10) =CONVERT(VARCHAR(10),@startdate,10))
CONVERT(VARCHAR(10),date_manufactured,10) =CONVERT(VARCHAR(10),@startdate,10))
回答by sajjad
Finally I get it done by
WHERE EnterDate > Convert(DATETIME,Convert(varchar,DATEADD(DAY,0,GETDATE()),101))
最后我通过
WHERE EnterDate > Convert(DATETIME,Convert(varchar,DATEADD(DAY,0,GETDATE()),101)) 完成它