GETDATE()を使いこなして業務効率アップ!SQL Serverで日付のみをスマートに取り出す方法
SQL Server の GETDATE()
で日付のみを取得する方法
SQL Server の GETDATE()
関数は、現在の日付と時刻を datetime
型で返します。しかし、多くの場合、日付のみが必要となります。そこで、今回は GETDATE()
で日付のみを取得する方法を、3つの方法に分けて解説します。
方法 1: CONVERT()
関数を使用する
最も汎用性の高い方法は、CONVERT()
関数を使用して、datetime
型を date
型に変換することです。
SELECT CONVERT(date, GETDATE()) AS '日付';
このクエリは、現在の日付のみを 日付
という名前の列に返します。
方法 2: FLOOR()
関数を使用する
FLOOR()
関数は、数値を最も近い小さい整数に丸めます。この特性を利用して、datetime
型から小数部(時刻情報)を切り捨て、日付のみを取得することができます。
SELECT FLOOR(GETDATE()) AS '日付';
CAST()
関数も型変換に使用できますが、CONVERT()
関数と比べて若干古い書式です。
SELECT CAST(GETDATE() AS date) AS '日付';
上記の方法で取得される日付の形式は、既定では yyyy-mm-dd
になります。フォーマットを変更したい場合は、FORMAT()
関数と組み合わせて使用することができます。
SELECT FORMAT(CONVERT(date, GETDATE()), 'yyyy/MM/dd') AS '日付';
このクエリは、現在の日付を yyyy/MM/dd
形式で 日付
という名前の列に返します。
SQL Server の GETDATE()
で日付のみを取得するには、主に 3 つの方法があります。
-- 現在の日付と時刻を取得
SELECT GETDATE() AS '現在の日付と時刻';
-- CONVERT() 関数を使用して日付のみを取得
SELECT CONVERT(date, GETDATE()) AS '日付 (CONVERT)';
-- FLOOR() 関数を使用して日付のみを取得
SELECT FLOOR(GETDATE()) AS '日付 (FLOOR)';
-- CAST() 関数を使用して日付のみを取得
SELECT CAST(GETDATE() AS date) AS '日付 (CAST)';
このコードを実行すると、以下の結果が出力されます。
現在の日付と時刻 日付 (CONVERT) 日付 (FLOOR) 日付 (CAST)
--------------------- -------------- -------------- --------------
2024-07-06 19:27:22 2024-07-06 2024-07-06 2024-07-06
DATEDIFF()
関数は、2つの日付間の差を日数、月数、年数などで計算することができます。一方、DATEADD()
関数は、指定された日付に日数、月数、年数などを加算または減算することができます。
これらの関数を組み合わせて、現在の日付から小数部(時刻情報)を "切り捨て" することで、日付のみを取得することができます。
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE())) AS '日付';
方法 5: SUBSTRING()
関数を使用する
SUBSTRING()
関数は、文字列の一部を抽出することができます。GETDATE()
関数は文字列としても扱えるため、SUBSTRING()
関数を使用して、日付部分のみを抽出することができます。
SELECT SUBSTRING(CONVERT(varchar(10), GETDATE(), 111), 1, 10) AS '日付';
上記以外にも、ROW_NUMBER()
関数や MAX()
関数などを組み合わせて日付のみを取得する方法があります。しかし、紹介した方法の方が一般的で分かりやすいので、ここでは割愛します。
SQL Server の GETDATE()
で日付のみを取得するには、様々な方法があります。状況に応じて最適な方法を選択してください。
留意点
SELECT FORMAT(CONVERT(date, GETDATE()), 'yyyy/MM/dd') AS '日付';
sql sql-server t-sql