![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
お世話になります。
T-SQL(SQL Server2000)で月数の差の求めたいのですが、良い方法がないでしょうか?
関数の中に"DATADIFF"というものがありますが、これだと↓
SET @l_day1 = CONVERT(DATETIME,'2008/10/31',120)
SET @l_day2 = CONVERT(DATETIME,'2008/11/01',120)
DATADIFF(MONTH,@l_day1,@l_day2)
/* 結果 */
1
"2008/10/31" と "2008/11/01" の24時間の差の場合でも、結果に月数のさは"1"と出てしまいます。
上記の改善方法、又は、月数の差を求めれるロジック等をご存知の方が居ましたらお知恵をお貸しください。
宜しくお願い致します。
No.3ベストアンサー
- 回答日時:
10/31の1ヶ月後はいつなんだという疑問は残りますが、やりたいことが
> 上記日付1と日付2の期間の差が1ヶ月以内の場合は
> SET 変数A = '1ヶ月以内です'
> それ以外の場合は、
> SET 変数A = '1ヶ月以上です'
ということであれば、こういう方法はどうでしょう?
set @l_day1 = DateAdd(d,-1,DateAdd(m,1,@l_day1))
select case when @l_day1 > @l_day2 then '1ヶ月未満' else '1ヶ月以上' end
基準となる日に1月を足して1日引いたものと比較するというものです。
No.5
- 回答日時:
Format("2008/10/17", "dd") > Format("2008/11/17", "dd")-->0
Format("2008/10/16", "dd") > Format("2008/11/17", "dd")-->1
年齢補正ではなかったですね!
No.4
- 回答日時:
>今日"2008/10/17"の1ヵ月後は、翌月の"2008/11/17"が1ヶ月後ですよね?
いわゆる満年齢計算に準じたやり方をしたいということですね。
Public Function GetAge(ByVal Birthday As Date, ByVal Hiduke As Date) As Long
GetAge = DateDiff("yyyy", Birthday, Hiduke) + _
(Format(Birthday - 1, "mm/dd") > Format(Hiduke, "mm/dd"))
End Function
DateDiff("mm", "2008/10/18", "2008/11/17")-->1
DateDiff("mm", "2008/10/17", "2008/11/17")-->1
Format("2008/10/17", "mm/dd") > Format("2008/11/17", "mm/dd")-->0
Format("2008/10/16", "mm/dd") > Format("2008/11/17", "mm/dd")-->1
この両者の合計値は 1 ないし 2
で、-1すれば0と1
ロジックはこういうことだと思います。
No.2
- 回答日時:
1ヶ月は必ず30日なのですか?
この回答への補足
今日"2008/10/17"の1ヵ月後は、翌月の"2008/11/17"が1ヶ月後ですよね?
処理としては、
例)
日付1 = '2008/10/10'
日付2 = '2008/11/09'
上記日付1と日付2の期間の差が1ヶ月以内の場合は
SET 変数A = '1ヶ月以内です'
それ以外の場合は、
SET 変数A = '1ヶ月以上です'
のような処理を行いたいのですが、伝わりましたでしょうか?
実際に処理を行うときは、日付は任意で入力される為
固定で30日で比較してしまうと日にちが合わなくなってしまいます・・・
No.1
- 回答日時:
Select DateDiff(MONTH, '2008/10/31', '2008/11/30')
1
Select DateDiff(MONTH, '2008/10/29', '2008/11/30')
1
ですよね。
で、どういうロジックなのでしょうか?
この回答への補足
肝心なことを記述するのを忘れてしまいました;;
申し訳ありません。
DateDiffでは月を跨いだだけで差が"1"と出てしまうので、
"2008/10/31" と "2008/11/01" を比較した場合の差は"0"とし、
"2008/10/31" と "2008/11/29" を比較した場合の差は"1"というようにさを出したいのですが・・・
うまく伝わったでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- SQL Server 2つのSQL(Access)の結果[時刻,カウント数]を結合して集計する方法 1 2022/04/06 22:57
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- Excel(エクセル) 下記エクセルの式がなぜこうなるのか理由が知りたいです。 6 2022/08/20 00:43
- 英語 "this day"が当日か今日を表すのかの使い分け方等について 5 2023/08/08 14:29
- 宇宙科学・天文学・天気 仙台で積雪量が増えたのに降雪量や天気概況には雪が降らなかった観測結果が出ることが最近多くなっている。 1 2023/02/01 19:16
- 化学 [例題①]プロパンのOHとの反応速度定数を k=1.0×10⁻¹²cm³s⁻¹、 [OH]=1.0× 0 2023/05/28 13:12
- SQL Server SQL 期間内の実施数を合計したい 2 2023/03/03 22:28
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlでsprintf("%02d",$month)...
-
T-SQL(SQL Server2000) 月数の...
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
-
ACCESS テキストボックスを隙...
-
formで特定のinputを送信しない...
-
16進の10進変換について
-
<SELECT>タグの折り返し
-
FindFirst を複数条件で検索
-
VBAでPDFのコピーとリネームを...
-
「*:*」って何を意味するのでし...
-
VBA他のブックから値のみ貼付す...
-
テーブル内でドロップダウンメ...
-
数値かどうかの判定方法
-
Fire fox の 文字化けを解消...
-
メモリをアドレスを直接指定し...
-
UWSCのSELECT文の記述方法
-
プロトタイプ宣言のワーニング...
-
$(ドル)の記号を表示したいの...
-
複数列を持ったリストボックス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
先月(YYYYMM)の生成方法
-
日齢計算プログラム
-
大至急お願いします。出力で悩み。
-
2つの日付・時間の差分を求め...
-
サマータイムの判定について
-
CSV読み込み時に条件に合う行(...
-
1桁の日付に0を付ける
-
Perlの日付の比較に関して
-
当日の日付をプルダウンメニュ...
-
ソースの詳細を教えてください。
-
日付の差分の求め方(日、分)
-
前日の日付取得するには?
-
体重が3kg増える/減る の英語...
-
日付範囲をの連番と月末を取得
-
PICで世界時計を作りたいのですが
-
PerlからMysqlに接続してデータ...
-
Schemeのプログラミング うる...
-
perlでcheckboxがうまく整理で...
-
時間の計算について
-
年令の計算方法
おすすめ情報