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

日時をfloatに変換する場合、SQLの変換関数はどのように機能しますか?

    DateTimeは、多くの場合、整数部分では事前に決定された日付(一般にエポックと呼ばれます)からの日数として表され、小数部分では深夜から経過した日のパーセンテージとして表されます。

    SQL Serverも例外ではないため、Floatへの変換は非常に理にかなっています。 0日目は1900年1月1日00:00:00です(AFAIK、特定のタイムゾーンではないため、「現地時間」と見なす必要があります)。

    だから、あなたはこれを試すことができます:

    declare @ADate DateTime;
    set @ADate = '19000101 00:00:00';
    select CONVERT(float, @ADate);  --should print 0
    set @ADate = '19000101 12:00:00';
    select CONVERT(float, @ADate);  --should print 0.5
    set @ADate = '19001231 06:00:00';
    select CONVERT(float, @ADate);  --should print 364.25
    

    したがって、結果として、1900年1月1日00:00:00および2010年1月7日00:00:00から40183日が経過しました

    明確化:Unixライクなシステムは、日時を保存するために異なるアプローチを使用します。Unixエポック(1970年1月1日00:00:00 UTC)からの秒数。これはエポックタイムとして知られています。

    [編集]この応答の日付形式は、20140416にYYYYMMDD形式に変更されました。これは、SQL Serverでの数年の新しい経験の後(@Damienがコメントで述べたように)、これが唯一の安全な形式です。



    1. ランダムな結果を10個取得するためにwhile/loopを実行する

    2. FROM_DAYS()の例– MySQL

    3. Pythonを使用してMySQLデータベースにNULLデータを挿入するにはどうすればよいですか?

    4. これらの2つの機能は、消毒には行き過ぎですか?