-1
@startdateと@enddateの間に、開始日と終了日を入力するように求めるSQLクエリがあります。しかし、私がしようとしているのは、dateadd/getdateコードを使用して、今日の月から3ヶ月前に同じクエリを自動的に探しますが、2つを統合する方法を理解できません。dateaddとbetween between SQL Query
@startdateと@enddateの間に、開始日と終了日を入力するように求めるSQLクエリがあります。しかし、私がしようとしているのは、dateadd/getdateコードを使用して、今日の月から3ヶ月前に同じクエリを自動的に探しますが、2つを統合する方法を理解できません。dateaddとbetween between SQL Query
GETDATE()
と
Why is the GETDATE() an invalid identifierに基づいてOracleで
DATEADD(MONTH,3,GETDATE())
DATEADD()
を参照しているので、私は仮定し、SQLサーバで
、そしてあなたのコメントに基づいて
ADD_MONTHS(SYSDATE,3)
Equivalent function for DATEADD() in OracleおよびSiebelがオンの場合あなたが必要とするsql-server
Where vwS_CoPrimPolicy.S_PrimPolicyExpDT Between @startdate And @enddate And vwS_Co.S_CoStatus = 'Customer' And vwS_Co.S_CoType = 'Automotive
少しそれを破壊する
where vwS_CoPrimPolicy.S_PrimPolicyExpDT Between
DATEFROMPARTS(YEAR(DATEADD(MONTH,3,GETDATE())),MONTH(DATEADD(MONTH,3,GETDATE())),1)
AND DATEADD(DAY,-1,DATEFROMPARTS(YEAR(DATEADD(MONTH,4,GETDATE())),MONTH(DATEADD(MONTH,4,GETDATE())),1))
And vwS_Co.S_CoStatus = 'Customer' And vwS_Co.S_CoType = 'Automotive
になるために
あなたが実際に月の開始を探しているので、今日から月末まで3ヶ月3ヶ月今日から、それらヶ月は28,29かもしれません、30日、または31日間、実際に日付を3ヶ月先に見つけてから、月の初めに取得する必要がありますDATEFROMPARTS()
はそのために便利です。その後、月末には、4ヶ月の日付を見つけて、1日前に戻ってください。
例データと予想される出力を追加してください –
どのRDBMSがこれですか? 'mysql'、' postgresql'、 'sql-server'、' oracle'、 'db2'のどれかを指定するタグを追加してください。 –
当社にはWebベースのツールがあり、Accessのように見え、SQLをビルドして一番下に検証します。 ***ここでは、私が話しているサンプルがあります:***どこvwS_CoPrimPolicy.S_PrimPolicyExpDT "at"開始日と "at"終了日とvwS_Co.S_CoStatus = 'Customer'そしてvwS_Co.S_CoType = 'Automotive' ***クエリは、 Siebel DB。したがって、出力は10月のすべての7月に引っ張られたレコードのリストなので、10/1/16 - 10/31/16です。これは毎月実行され、常に90日先を見ています。 –