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

TO_SECONDS()がMariaDBでどのように機能するか

    MariaDBでは、TO_SECONDS() は、0年目から指定された日付または日時式までの秒数を返す組み込みの日付と時刻の関数です。

    構文

    構文は次のようになります:

    TO_SECONDS(expr)

    expr は日付または日時の値です。

    次に例を示します:

    SELECT TO_SECONDS('2020-10-30');

    結果:

    +--------------------------+
    | TO_SECONDS('2020-10-30') |
    +--------------------------+
    |              63771235200 |
    +--------------------------+

    ここに、他のいくつかの時間値があります:

    SELECT 
        TO_SECONDS('0000-01-01'),
        TO_SECONDS('1234-10-30');

    結果:

    +--------------------------+--------------------------+
    | TO_SECONDS('0000-01-01') | TO_SECONDS('1234-10-30') |
    +--------------------------+--------------------------+
    |                    86400 |              38967436800 |
    +--------------------------+--------------------------+

    日時の値

    日時の値を使用する例を次に示します。

    SELECT TO_SECONDS('2020-10-30 10:23:47');

    結果:

    +-----------------------------------+
    | TO_SECONDS('2020-10-30 10:23:47') |
    +-----------------------------------+
    |                       63771272627 |
    +-----------------------------------+

    マイクロ秒

    TO_SECONDS() マイクロ秒を無視します:

    SELECT TO_SECONDS('2020-10-30 10:23:47.999999');

    結果:

    +------------------------------------------+
    | TO_SECONDS('2020-10-30 10:23:47.999999') |
    +------------------------------------------+
    |                              63771272627 |
    +------------------------------------------+

    数値日付

    数値の日付がサポートされています:

    SELECT TO_SECONDS(20201030);

    結果:

    +----------------------+
    | TO_SECONDS(20201030) |
    +----------------------+
    |          63771235200 |
    +----------------------+

    現在の日付/時刻

    NOW()を使用する例を次に示します。 現在の日時に基づいて秒数を返すには:

    SELECT 
        NOW(),
        TO_SECONDS(NOW());

    結果:

    +---------------------+-------------------+
    | NOW()               | TO_SECONDS(NOW()) |
    +---------------------+-------------------+
    | 2021-05-31 09:34:16 |       63789672856 |
    +---------------------+-------------------+

    ただし、CURDATE()を使用する場合 、別の結果が得られます(CURDATE() 日付値を返しますが、NOW() 日時の値を返します。

    SELECT 
        NOW(),
        TO_SECONDS(NOW()),
        CURDATE(),
        TO_SECONDS(CURDATE());

    結果(垂直出力を使用):

                    NOW(): 2021-05-31 09:35:01
        TO_SECONDS(NOW()): 63789672901
                CURDATE(): 2021-05-31
    TO_SECONDS(CURDATE()): 63789638400

    無効な引数

    無効な引数が渡されると、TO_SECONDS() nullを返します 警告付き:

    SELECT TO_SECONDS('Homer');

    結果:

    +---------------------+
    | TO_SECONDS('Homer') |
    +---------------------+
    |                NULL |
    +---------------------+
    1 row in set, 1 warning (0.000 sec)

    警告を確認してください:

    SHOW WARNINGS;

    結果:

    +---------+------+-------------------------------+
    | Level   | Code | Message                       |
    +---------+------+-------------------------------+
    | Warning | 1292 | Incorrect time value: 'Homer' |
    +---------+------+-------------------------------+

    引数がありません

    TO_SECONDS()を呼び出す 引数の数が間違っているか、引数を渡さないと、エラーが発生します:

    SELECT TO_SECONDS();

    結果:

    ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_SECONDS'

    そして別の例:

    SELECT TO_SECONDS('2020-10-08', '10:09:10');

    結果:

    ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_SECONDS'

    1. Mysqlまたは/および優先順位?

    2. 配列または複数の値を1つの列に格納する方法

    3. Oracleはいつnull列値を索引付けしますか?

    4. SQLサーバーのdoubleを表すものは何ですか?