web-dev-qa-db-ja.com

「DATE」は認識された組み込み関数名ではありません

当日のすべての記録を見つけたいです。タイプDATEのフィールドDateがあります。 SQLサーバーでエラーが発生します

'DATE' is not a recognized built-in function name.

この行に

(DATE(EnterDate) = CURDATE() )
7
sajjad

エラーが示すように、SQL Server2008または2012にはDATEfunctionがありません(両方にタグを付けたため、どちらかわかりませんあなたがターゲットにしている)。ただし、SQL Server 2008以降ではcandate型にキャストできます。

_WHERE EnterDate = CONVERT(date,GETDATE())
_

CURDATE関数もないので、それをGETDATE()に変換したことに注意してください。

13
D Stanley

Where句で次の条件を使用します

WHERE CAST(DateColumn AS DATE) = CAST(GETDATE() AS DATE)
              ^------------ Your Column Name with `Date` or 'DateTime'  data type

CURDATE()はmysql関数です。SQL-Serverには、現在の日付と時刻を取得するためのGETDATE()関数があります。

3
M.Ali

より効率的なものは

WHERE EnterDate > DATEADD(dd, -1, DATEDIFF(dd, 0, GETDATE()))

@D Stanley @ marc_Sと@Mihaiに感謝します

2
sajjad

これは正確な答えではありませんが、日時変数から時間部分をトリミングする方法の例です

CONVERT(VARCHAR(10)、date_manufactured、10)= CONVERT(VARCHAR(10)、@ startdate、10))

最後に私はそれを成し遂げます
WHERE EnterDate> Convert(DATETIME、Convert(varchar、DATEADD(DAY、0、GETDATE())、101))

0
sajjad