[解決済み】SQL Serverでdatetimeの時間部分を削除する最良の方法
質問
SQL Serverでdatetimeフィールドから時間部分を削除する場合、どの方法が最も良いパフォーマンスを提供しますか?
a) select DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
または
b) select cast(convert(char(11), getdate(), 113) as datetime)
2番目の方法は、どちらにしても数バイト多く送信されますが、それは変換のスピードほど重要ではないかもしれません。
また、どちらも非常に高速に見えますが、数十万行以上扱う場合は速度に差が出るかもしれませんね?
また、SQLでdatetimeの時間部分を取り除くには、さらに良い方法があるのでしょうか?
どのように解決するのですか?
厳密には、メソッド
a
が最もリソースを消費しない。
a) select DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
100万行と同じ時間でCPU負荷が低いことが、時間を持て余した誰かによって証明された。 SQL Serverでdate+timeから日付を取得する最も効率的な方法とは?
私も他で同じようなテストを見ましたが、同じような結果でした。
私はDATEADD/DATEDIFFの方が好きだからです。
-
varchar は言語/日付フォーマットの問題があります。
例 なぜ私のCASE式は非決定的なのですか? - floatは内部ストレージに依存する
- を変更することで、月の初日や明日などの計算を行うことができます。
2011年10月編集
SQL Server 2008+の場合、CASTで
date
すなわち
CAST(getdate() AS date)
. または、単に
date
のデータ型がないため
time
を削除してください。
編集部, 2012年01月
柔軟性の高さを示す作業例です。 SQLサーバーで丸められた時間や日付の数字で計算する必要があります。
編集部, 2012年05月
何も考えずにWHERE句などで使ってはいけません。カラムに関数やCASTを追加すると、インデックスの利用が無効になります。2番はこちら SQLプログラミングのよくある間違い
さて、これにはSQL Serverオプティマイザーの後のバージョンでCASTを正しく管理する例がありますが 一般的に というのはよくないでしょう.
編集部、2018年9月、datetime2について
DECLARE @datetime2value datetime2 = '02180912 11:45' --this is deliberately within datetime2, year 0218
DECLARE @datetime2epoch datetime2 = '19000101'
select DATEADD(dd, DATEDIFF(dd, @datetime2epoch, @datetime2value), @datetime2epoch)
関連
-
[解決済み] 検索エラー ORA-00932: 不整合なデータ型: 期待された DATE は NUMBER になりました。
-
[解決済み] ORA-01821: ISO 8601 のローカルタイム付き日付のフォーマットが認識されないエラー
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] SQL Server テーブルにカラムが存在するかどうかを確認する方法は?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] SQL ServerにおけるLEFT JOINとLEFT OUTER JOINの比較
-
[解決済み] SQL Server - 挿入された行のIDを取得するための最良の方法は?
-
[解決済み] SQL Server における DateTime2 と DateTime の比較
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】CREATE VIEW は、バッチ内の唯一のステートメントでなければなりません。
-
[解決済み] varchar データ型から datetime データ型に変換すると、SQL クエリで範囲外の値が発生する
-
[解決済み】集約関数のないTSQLピボット
-
[解決済み】参照するテーブルにプライマリーキーやキャンディデートキーがない
-
[解決済み】ORA-01791: SELECTされた式ではない
-
[解決済み] アンピボットの主キーを含む対象コードページで、テキストが切り捨てられたか、1つ以上の文字が一致しない。
-
[解決済み] Varchar は Sum 演算子では無効です。
-
[解決済み] DELETE文の競合REFERENCE制約
-
[解決済み] SQLです。最初の出現箇所のみを返す
-
[解決済み] SQLiteでどのようにピボットするか、つまり、長い形式で保存されたテーブルを広い形式で選択するか?