20

datetime 値 (SQL Server) の時刻部分を削除する最良の方法は何ですか?

日時を使用していつ作成されたかを追跡する列がありますが、それらを日ごとにグループ化したレポートを生成したいので、日時列の時間コンポーネントを無効にする方法が必要です。

どうすればいいですか?

4

8 に答える 8

40

日付に直接変換してみませんか:

select convert(date, getdate())

これは、ラウンドではなく、日数を切り捨てます。日を丸めるにはこれを行います:

select convert(date, getdate() + 0.5)
于 2012-01-05T20:24:47.577 に答える
19

1 つの方法はgetdate()、列名に変更することです。

select dateadd(dd, datediff(dd, 0, getdate())+0, 0)
于 2009-02-11T19:43:02.860 に答える
5

別の解決策は次のとおりです。

SELECT CAST( FLOOR( CAST( GETDATE() AS float) ) AS smalldatetime)
于 2009-07-27T21:58:53.383 に答える
2

これは、datetime から日付を (文字列として) 取得する簡単な方法です。

convert(varchar, <the date field/value/etc>, 101)

ただし、このフィールドは文字列になっているため、日付順ではなくアルファベット順になることに注意してください。

于 2009-02-11T19:40:28.887 に答える
1

はい。選択できる形式はたくさんあるので、代わりにリンクします。

http://library.cirr.com/Microsoft/SQL-Server-v7/html/ca-co_1.htm

投稿が示唆するように時間をゼロにしたい場合は、これを試すことができます:

select cast(convert(varchar, getdate(), 101) as datetime)
于 2009-02-11T19:40:20.243 に答える
0
declare @CurrentDate datetime
set @CurrentDate = dateadd(dd, datediff(dd, 0, getdate()), 0)

- また -

select dateadd(dd, datediff(dd, 0, MyDateColumn), 0) as DateOnly
from tblX
于 2009-02-11T19:43:12.750 に答える