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
お礼
ご回答ありがとうございます。 >varchar2は、「Oracle独自のデータ型」と認識していますが? ご指摘とおりです。私の記述勘違いです。varcharでした。 >時刻をvarcharで管理するメリットって、思い浮かばないのですが? ある会社のシステム増強で、ユーザー先が昔のシステム(デーダベース)をそのまま残したいと要望されたためです。 SQL文のご教示ありがとうございました。 一応中身は理解したつもりですが、明日会社で再度検証します。 ありがとうございました。