web-dev-qa-db-ja.com

SQL ServerのTrunc(sysdate)

同等のものは何ですか:

TRUNC(SYSDATE) 

... SQL Server 2005では?

13
Domnic

推奨:

DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))

これは別の方法ですが、FLOATにキャストするため危険です。 DATEADD/DATEDIFFアプローチと同様に、パフォーマンスをスケーリングしないことも実証されています。

CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)
18
OMG Ponies

もう1つのオプションは、 [〜#〜] convert [〜#〜] (MSSQL 2008以降)を使用して、適切なスタイルを使用するか、SUBSTRINGできるスタイルを使用することです。しかし、dateadd/datediffソリューションと比較したパフォーマンスについてはわかりません。

例えば.

SELECT SUBSTRING(CONVERT(nvarchar(30), GETDATE(), 120), 1, 16)

戻り値:

2012-01-03 15:30

1分あたりに作成された行を一覧表示するグループを使用した例(「作成された」日時列を前提としています):

SELECT SUBSTRING(CONVERT(nvarchar(30), created, 120), 1, 16) as [minute]
, COUNT(1) as [per min]
FROM foo
GROUP BY SUBSTRING(CONVERT(nvarchar(30), created, 120), 1, 16)
1
stoft