SQL Serverで日付を操作しているときに、DATEPART()
にたどり着くことがあります。 関数、本当に必要なのはDATENAME()
であることを理解するためだけに 働き。次に、DATEPART()
が発生する他の状況が発生する可能性があります 実際にはDATENAME()
よりも望ましいです 。
では、DATEPART()
の違いは何ですか およびDATENAME()
機能?
調べてみましょう。
定義
これら2つの関数の違いは、それらの定義にあります。
-
DATEPART()
- 整数を返します 指定されたdatepartを表します 指定された日付 。
-
DATENAME()
- 文字列を返します 指定されたdatepartを表します 指定された日付
それらの定義によると、これら2つの関数の唯一の違いは、戻り値のタイプです。
-
DATEPART()
整数を返します。 -
DATENAME()
文字列を返します。
それが違いです。
どちらの定義でも、 datepart は必要な日付の一部(月など)であり、日付 日付部分を返す日付です。
月と日の名前
DATENAME()
の最も明白な例 DATEPART()
に適しています 日または月の名前を返したいときです。
これが例です。
DATENAME()
DATENAME()
は次のとおりです 日付からの曜日と月が必要なときに戻ります:
SELECT DATENAME(weekday, '2000-01-01') AS 'DATENAME Weekday', DATENAME(month, '2000-01-01') AS 'DATENAME Month';
結果:
+--------------------+------------------+ | DATENAME Weekday | DATENAME Month | |--------------------+------------------| | Saturday | January | +--------------------+------------------+
DATEPART()
DATEPART()
は次のとおりです 戻り値:
SELECT DATEPART(weekday, '2000-01-01') AS 'DATEPART Weekday', DATEPART(month, '2000-01-01') AS 'DATEPART Month';
結果:
+--------------------+------------------+ | DATEPART Weekday | DATEPART Month | |--------------------+------------------| | 7 | 1 | +--------------------+------------------+
結果が同じ場合
ほとんどの場合、両方の関数の結果は同じように見えます。これは、ほとんどの日付部分がその性質上数値であるためです。例:
SELECT DATEPART(year, '2000-01-01') AS DATEPART, DATENAME(year, '2000-01-01') AS DATENAME;
結果:
+------------+------------+ | DATEPART | DATENAME | |------------+------------| | 2000 | 2000 | +------------+------------+
ただし、前述のように、一方は整数を返し、もう一方は文字列を返します。
次の例でその証拠を見ることができます:
SELECT DATEPART(year, '2000-01-01') + '1' AS DATEPART, DATENAME(year, '2000-01-01') + '1' AS DATENAME;
結果:
+------------+------------+ | DATEPART | DATENAME | |------------+------------| | 2001 | 20001 | +------------+------------+
プラス記号は、数値データ型の算術演算子ですが、文字列の文字列連結演算子です。