ODBC SQLサーバーでSQLを実行したい・・・
ODBC SQLサーバーでSQLを実行したい・・・
昨日から入り浸っている初心者PGです。
昨日は、実行日から直近の金曜日の日付を抽出するというSQLを質問させて頂きました。
今回は前月の月初第一金曜日に当たる日付を出力するSQLについての質問となります。
下記のSQLは先輩が作成したSQLになります。
もっと簡単に書けないか悩んでいます。
補足として日付は8桁で出力をしたいです。(例:20100507)
宜しければご教授賜りたいです。(原文そのままコピーしてますw)
/* いけてるsql */
SELECT
case
(6 - (datepart(Dw,cast(datename(year,dateadd(mm, -1, getdate())) + '-' +
datename(month,dateadd(mm, -1, getdate())) + '-' + '01' as datetime))))
when '-1' then
datename(year,cast(datename(year,dateadd(mm, -1, getdate())) + '-' +
datename(month,dateadd(mm, -1, getdate())) + '-' + '01' as datetime) + 6) +
datename(month,cast(datename(year,dateadd(mm, -1, getdate())) + '-' +
datename(month,dateadd(mm, -1, getdate())) + '-' + '01' as datetime) + 6) +
RIGHT('00'+CONVERT(varchar,datename(day,cast(datename(year,dateadd(mm, -1, getdate())) + '-' +
datename(month,dateadd(mm, -1, getdate())) + '-' + '01' as datetime) + 6) ),2)
else
datename(year,cast(datename(year,dateadd(mm, -1, getdate())) + '-' +
datename(month,dateadd(mm, -1, getdate())) + '-' + '01' as datetime)
+ (6 - (datepart(Dw,cast(datename(year,dateadd(mm, -1, getdate())) + '-' +
datename(month,dateadd(mm, -1, getdate())) + '-' + '01' as datetime))))) +
datename(month,cast(datename(year,dateadd(mm, -1, getdate())) + '-' +
datename(month,dateadd(mm, -1, getdate())) + '-' + '01' as datetime)
+ (6 - (datepart(Dw,cast(datename(year,dateadd(mm, -1, getdate())) + '-' +
datename(month,dateadd(mm, -1, getdate())) + '-' + '01' as datetime))))) +
RIGHT('00'+CONVERT(varchar,datename(day,cast(datename(year,dateadd(mm, -1, getdate())) + '-' +
datename(month,dateadd(mm, -1, getdate())) + '-' + '01' as datetime)
+ (6 - (datepart(Dw,cast(datename(year,dateadd(mm, -1, getdate())) + '-' +
datename(month,dateadd(mm, -1, getdate())) + '-' + '01' as datetime))))) ),2)
end
お礼
日付の差を求める関数が用意されていたのですね 回答していただき助かりました。