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

SQLServerでのカスタムの日付/時刻の書式設定

    DATENAMEを使用して、ストアドプロシージャではなく、関数でロジックをラップします

    declare @myTime as DateTime
    
    set @myTime = GETDATE()
    
    select @myTime
    
    select DATENAME(day, @myTime) + SUBSTRING(UPPER(DATENAME(month, @myTime)), 0,4)
    

    「14OCT」を返します

    日付を操作するときは、可能であれば文字/文字列ベースの操作を使用しないようにしてください。それらは数値(浮動小数点)であり、パフォーマンスはこれらのデータ型変換の影響を受けます。

    私が何年にもわたって編集したこれらの便利な変換を掘り下げてください...

    /* Common date functions */
    --//This contains common date functions for MSSQL server
    
    /*Getting Parts of a DateTime*/
        --//gets the date only, 20x faster than using Convert/Cast to varchar
        --//this has been especially useful for JOINS
        SELECT (CAST(FLOOR(CAST(GETDATE() as FLOAT)) AS DateTime))
    
        --//gets the time only (date portion is '1900-01-01' and is considered the "0 time" of dates in MSSQL, even with the datatype min value of 01/01/1753. 
        SELECT (GETDATE() - (CAST(FLOOR(CAST(GETDATE() as FLOAT)) AS DateTime)))
    
    
    /*Relative Dates*/
    --//These are all functions that will calculate a date relative to the current date and time
        /*Current Day*/
        --//now
        SELECT (GETDATE())
    
        --//midnight of today
        SELECT (DATEADD(ms,-4,(DATEADD(dd,DATEDIFF(dd,0,GETDATE()) + 1,0))))
    
        --//Current Hour
        SELECT DATEADD(hh,DATEPART(hh,GETDATE()),CAST(FLOOR(CAST(GETDATE() AS FLOAT)) as DateTime))
    
        --//Current Half-Hour - if its 9:36, this will show 9:30
        SELECT DATEADD(mi,((DATEDIFF(mi,(CAST(FLOOR(CAST(GETDATE() as FLOAT)) as DateTime)), GETDATE())) / 30) * 30,(CAST(FLOOR(CAST(GETDATE() as FLOAT)) as DateTime)))
    
        /*Yearly*/
        --//first datetime of the current year
        SELECT (DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0))
    
        --//last datetime of the current year
        SELECT (DATEADD(ms,-4,(DATEADD(yy,DATEDIFF(yy,0,GETDATE()) + 1,0))))
    
        /*Monthly*/
        --//first datetime of current month
        SELECT (DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0))
    
        --//last datetime of the current month
        SELECT (DATEADD(ms,-4,DATEADD(mm,1,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0))))
    
        --//first datetime of the previous month
        SELECT (DATEADD(mm,DATEDIFF(mm,0,GETDATE()) -1,0))
    
        --//last datetime of the previous month
        SELECT (DATEADD(ms, -4,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0)))
    
        /*Weekly*/
        --//previous monday at 12AM
        SELECT (DATEADD(wk,DATEDIFF(wk,0,GETDATE()) -1 ,0))
    
        --//previous friday at 11:59:59 PM
        SELECT (DATEADD(ms,-4,DATEADD(dd,5,DATEADD(wk,DATEDIFF(wk,0,GETDATE()) -1 ,0))))
    
        /*Quarterly*/
        --//first datetime of current quarter
        SELECT (DATEADD(qq,DATEDIFF(qq,0,GETDATE()),0))
    
        --//last datetime of current quarter
        SELECT (DATEADD(ms,-4,DATEADD(qq,DATEDIFF(qq,0,GETDATE()) + 1,0)))
    


    1. OBJECTPROPERTY()を使用して、SQLServerでテーブルにDEFAULT制約があるかどうかを確認します。

    2. T-SQLの週番号から日付を取得する

    3. MySQLで1日あたりの累積合計ユーザーを取得する方法

    4. MariaDBで大文字を含む行を見つける4つの方法