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

SQL Serverの日付から日、月、年を取得する6つの関数

    Transact-SQLには、日付と時刻の操作に役立つ一連の関数が含まれています。日付を操作するときのより一般的なタスクの1つは、日付のさまざまな部分を抽出することです。たとえば、年または月だけが必要な場合があります。また、曜日が必要な場合もあります。いずれにせよ、SQLServerでこれを行う方法はたくさんあります。

    特に、次の関数を使用すると、SQL Serverの日付から日、月、および年を返すことができます。

    • DAY()MONTH() 、およびYEAR()
    • DATEPART()
    • DATENAME()
    • FORMAT()

    これらの機能については、以下で説明します。

    DAY()、MONTH()、およびYEAR()関数

    日付から日、月、年を返す最もわかりやすい方法は、同じ名前のT-SQL関数を使用することです。はい、T-SQLには、これら3つの日付部分を返すために特別に構築された関数があります。

    それらがどのように機能するかの例を次に示します。

    DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';
    SELECT 
        DAY(@date) AS DAY,
        MONTH(@date) AS MONTH,
        YEAR(@date) AS YEAR;
    

    結果:

    +-------+---------+--------+
    | DAY   | MONTH   | YEAR   |
    |-------+---------+--------|
    | 2     | 6       | 2018   |
    +-------+---------+--------+
    

    これらの関数は、日付部分を整数として返します。 DATEPART()と同じ結果を返します 関数は指定された日付部分を返します。

    DATEPART()関数

    DATEPART() 関数は、日付の指定された部分を返すために特別に構築されました。したがって、この関数を使用して、前の例とまったく同じ結果を返すことができます。

    DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';
    SELECT 
        DATEPART(day, @date) AS DAY,
        DATEPART(weekday, @date) AS WEEKDAY,
        DATEPART(month, @date) AS MONTH,
        DATEPART(year, @date) AS YEAR;
    

    結果:

    +-------+-----------+---------+--------+
    | DAY   | WEEKDAY   | MONTH   | YEAR   |
    |-------+-----------+---------+--------|
    | 2     | 7         | 6       | 2018   |
    +-------+-----------+---------+--------+
    

    この関数を使用する利点の1つは、日付と時刻の他の部分も返すことができることです。この例でわかるように、曜日(day)だけでなく曜日も返しました。 は月の日、weekday 曜日です)。分、秒、ミリ秒などのさまざまな時間部分を返すこともできます。その他の例については、DATEPART()を参照してください。 SQLServerの例。

    DATEPART() 関数は結果を整数として返すため、日付から月の名前または曜日の名前を取得することはできません。ただし、心配する必要はありません。DATENAME()を使用できます。 またはFORMAT() そのための機能。

    DATENAME()関数

    DATENAME() 関数はDATEPART()に似ています 関数。ただし、結果を整数ではなく文字列として返します。 DATENAME() また、数値ではなく、フルネームとして月と曜日を返します。

    例:

    DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';
    SELECT 
        DATENAME(day, @date) AS DAY,
        DATENAME(weekday, @date) AS WEEKDAY,
        DATENAME(month, @date) AS MONTH,
        DATENAME(year, @date) AS YEAR;
    

    結果:

    +-------+-----------+---------+--------+
    | DAY   | WEEKDAY   | MONTH   | YEAR   |
    |-------+-----------+---------+--------|
    | 2     | Saturday  | June    | 2018   |
    +-------+-----------+---------+--------+
    

    この関数のその他の例については、DATENAME()を参照してください。 SQLServerの例。

    FORMAT()関数

    FORMAT()を使用できます DATENAME()と同じ値を返す関数 機能など。

    これは、以前の機能よりも用途の広い機能です。日付/時刻と数値を文字列としてフォーマットできます。戻り値は、 nvarcharのいずれかです。 またはnull(入力に応じて)。文字列の長さは、指定された形式によって決定されます。

    FORMAT() また、日付部分の表示方法に関するその他のオプションも提供します。 1文字、2文字、3文字、4文字、場合によっては5文字で表示するかどうかを指定できます。

    実例を示します。

    DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';
    SELECT 
        FORMAT(@date, 'd ') AS d,
        FORMAT(@date, 'dd') AS dd,
        FORMAT(@date, 'ddd') AS ddd,
        FORMAT(@date, 'dddd') AS dddd;
    

    結果:

    +-----+------+-------+----------+
    | d   | dd   | ddd   | dddd     |
    |-----+------+-------+----------|
    | 2   | 02   | Sat   | Saturday |
    +-----+------+-------+----------+
    

    DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';
    SELECT 
        FORMAT(@date, 'M ') AS M,
        FORMAT(@date, 'MM') AS MM,
        FORMAT(@date, 'MMM') AS MMM,
        FORMAT(@date, 'MMMMM') AS MMMM;
    

    結果:

    +-----+------+-------+--------+
    | M   | MM   | MMM   | MMMM   |
    |-----+------+-------+--------|
    | 6   | 06   | Jun   | June   |
    +-----+------+-------+--------+
    

    DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';
    SELECT     
        FORMAT(@date, 'y ') AS y,
        FORMAT(@date, 'yy') AS yy,
        FORMAT(@date, 'yyy') AS yyy,
        FORMAT(@date, 'yyyy') AS yyyy,
        FORMAT(@date, 'yyyyy') AS yyyyy;
    

    結果:

    +-----+------+-------+--------+---------+
    | y   | yy   | yyy   | yyyy   | yyyyy   |
    |-----+------+-------+--------+---------|
    | 18  | 18   | 2018  | 2018   | 02018   |
    +-----+------+-------+--------+---------+
    

    年の部分を5桁でフォーマットするオプションがあることに注意してください。

    桁数について

    日付部分を数字形式で返す場合、フォーマット指定子は返す最小桁数を決定します。たとえば、yyyを使用する場合 、年が0008の場合、年は3桁で返されます ただし、年が2008の場合は、4桁になります。 。

    例:

    DECLARE @date datetime2 = '0008-06-02 08:24:14.3112042';
    SELECT     
        FORMAT(@date, 'y ') AS y,
        FORMAT(@date, 'yy') AS yy,
        FORMAT(@date, 'yyy') AS yyy,
        FORMAT(@date, 'yyyy') AS yyyy,
        FORMAT(@date, 'yyyyy') AS yyyyy;  
    

    結果:

    +-----+------+-------+--------+---------+
    | y   | yy   | yyy   | yyyy   | yyyyy   |
    |-----+------+-------+--------+---------|
    | 8   | 08   | 008   | 0008   | 00008   |
    +-----+------+-------+--------+---------+
    

    また、単一のオプションを使用する場合(例:d )日付指定子として、その日付部分のみを返す場合は、スペースを追加する必要があります。これを行わないと、その単一の日付部分よりも多くのものを取得できます。

    例:

    DECLARE @date datetime2 = '2008-06-02 08:24:14.3112042';
    SELECT 
        FORMAT(@date, 'd ') AS 'Space',
        FORMAT(@date, 'd') AS 'No Space',
        FORMAT(@date, 'M ') AS 'Space',
        FORMAT(@date, 'M') AS 'No Space',
        FORMAT(@date, 'y ') AS 'Space',
        FORMAT(@date, 'y') AS 'No Space';
    

    結果:

    +---------+------------+---------+------------+---------+------------+
    | Space   | No Space   | Space   | No Space   | Space   | No Space   |
    |---------+------------+---------+------------+---------+------------|
    | 2       | 6/2/2008   | 6       | June 2     | 8       | June 2008  |
    +---------+------------+---------+------------+---------+------------+
    

    詳細については、FORMAT() 例については、SQLServerで日付と時刻をフォーマットする方法を参照してください。


    1. SQLのマッチングアルゴリズム

    2. MySQL挿入クエリから新しいレコードの主キーIDを取得しますか?

    3. DebianとUbuntuにMariaDB10をインストールする方法

    4. SQLデータ操作言語