sql >> データベース >  >> RDS >> Sqlserver

SQL Server DATEPART()とDATENAME()–違いは何ですか?

    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      |
    +------------+------------+
    

    プラス記号は、数値データ型の算術演算子ですが、文字列の文字列連結演算子です。


    1. ExecuteReaderには、開いていて利用可能な接続が必要です。接続の現在の状態は接続中です

    2. SQL ServerのOBJECTPROPERTY()を使用して、オブジェクトが外部キーであるかどうかを確認します

    3. MSSQLServerデータベースでのインデックスの最適化の自動化

    4. LOAD DATA INFILEエラーコード:13