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

SQLサーバーで日付をフロアする

    重要なのは、適切なSQLタイムスパン列挙とともにDATEADDとDATEDIFFを使用することです。

    declare @datetime datetime;
    set @datetime = getdate();
    select @datetime;
    select dateadd(year,datediff(year,0,@datetime),0);
    select dateadd(month,datediff(month,0,@datetime),0);
    select dateadd(day,datediff(day,0,@datetime),0);
    select dateadd(hour,datediff(hour,0,@datetime),0);
    select dateadd(minute,datediff(minute,0,@datetime),0);
    select dateadd(second,datediff(second,'2000-01-01',@datetime),'2000-01-01');
    select dateadd(week,datediff(week,0,@datetime),-1); --Beginning of week is Sunday
    select dateadd(week,datediff(week,0,@datetime),0); --Beginning of week is Monday
    

    秒単位でフローリングしている場合、0を使用すると算術オーバーフローが発生することがよくあります。したがって、フローリングしようとしている日時よりも低いことが保証されている既知の値を選択してください。



    1. SQL Serverのすべてのデータベースのすべてのテーブルを単一の結果セットに一覧表示するにはどうすればよいですか?

    2. Network_linkを使用したデータの移行

    3. 悪名高いjava.sql.SQLException:適切なドライバーが見つかりません

    4. SQL ServerのLIMITとOFFSETに相当しますか?