![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.1ベストアンサー
- 回答日時:
カレンダーっぽいレコードセットを返すストアドです。
「□」(全角の四角)をTABに変換して、使用してください。
VBなどからの利用であれば、
http://okwave.jp/kotaeru.php3?q=1648176
http://okwave.jp/kotaeru.php3?q=1680532
を参考にしてください。
CREATE PROCEDURE PROC_GET_MONTH_TABLE(
--ALTER PROCEDURE PROC_GET_MONTH_TABLE(
□@年□AS VARCHAR(4),
□@月□AS VARCHAR(2)
)
AS
BEGIN
□--結果出力用のテーブル
□DECLARE @TBL□TABLE
□(
□□日□INTEGER,
□□月□INTEGER,
□□火□INTEGER,
□□水□INTEGER,
□□木□INTEGER,
□□金□INTEGER,
□□土□INTEGER
□)
□DECLARE @DATE□□DATETIME
□DECLARE @INT_月□□INTEGER
□DECLARE @INT_カウンタ□INTEGER
□--//カウンタの初期化
□SET @INT_カウンタ = 0
□--//日付を求める
□SET @DATE = CONVERT(DATETIME, @年 + '/' + @月 + '/01' )
□--//当月を求める
□SET @INT_月 = DATEPART(MONTH, @DATE)
□--月が替わるまで、処理を継続する
□WHILE (DATEPART(MONTH, DATEADD(DAY, @INT_カウンタ, @DATE)) = @INT_月)
□BEGIN
□□DECLARE @DATE_ワーク□DATETIME
□□DECLARE @INT_日□□INTEGER
□□DECLARE @INT_曜日ID□INTEGER
□□DECLARE @INT_日曜□□INTEGER
□□DECLARE @INT_月曜□□INTEGER
□□DECLARE @INT_火曜□□INTEGER
□□DECLARE @INT_水曜□□INTEGER
□□DECLARE @INT_木曜□□INTEGER
□□DECLARE @INT_金曜□□INTEGER
□□DECLARE @INT_土曜□□INTEGER
□□
□□--//カウンタの分だけ、日付を加算
□□SET @DATE_ワーク = DATEADD(DAY, @INT_カウンタ, @DATE)
□□--//曜日IDを求める
□□SET @INT_曜日ID = DATEPART(WEEKDAY, @DATE_ワーク)
□□--//日付を求める
□□SET @INT_日 = DATEPART(DAY, @DATE_ワーク)
□□--//該当する曜日変数に、日付を格納
□□IF @INT_曜日ID = 1□SET @INT_日曜 =@INT_日
□□IF @INT_曜日ID = 2□SET @INT_月曜 =@INT_日
□□IF @INT_曜日ID = 3□SET @INT_火曜 =@INT_日
□□IF @INT_曜日ID = 4□SET @INT_水曜 =@INT_日
□□IF @INT_曜日ID = 5□SET @INT_木曜 =@INT_日
□□IF @INT_曜日ID = 6□SET @INT_金曜 =@INT_日
□□IF @INT_曜日ID = 7□SET @INT_土曜 =@INT_日
□□--//カウンタを進める
□□SET @INT_カウンタ = @INT_カウンタ + 1
□□--[土曜日]または[月替わり]に、週レコードを挿入
□□IF (@INT_曜日ID = 7) OR (DATEPART(MONTH,DATEADD(DAY,@INT_カウンタ,@DATE)) <> @INT_月)
□□BEGIN
□□□INSERT @TBL
□□□SELECT
□□□□@INT_日曜
□□□□,@INT_月曜
□□□□,@INT_火曜
□□□□,@INT_水曜
□□□□,@INT_木曜
□□□□,@INT_金曜
□□□□,@INT_土曜
□□□SET @INT_日曜 = NULL
□□□SET @INT_月曜 = NULL
□□□SET @INT_火曜 = NULL
□□□SET @INT_水曜 = NULL
□□□SET @INT_木曜 = NULL
□□□SET @INT_金曜 = NULL
□□□SET @INT_土曜 = NULL
□□END
□END
□--結果の出力
□SELECT *FROM @TBL
END
No.2
- 回答日時:
MSDE または SQl SERVER 7.0以上であれば
DATEADD 関数で簡単に求めることができます。
>>例:200604の場合01~30という値を返す
ということですが 詰まるとこ月末日が求められればOK
なわけですよね?
例:
2006年4月の末尾を求める
----------------------------------------
Create Procedure 月末日計算
@P計算年月 as datetime = '2006/04/01', -- 計算したい年月を設定します。
@O月末日 as INT OUTPUT
as
declare @WK月末日 as datetime
SET @WK月末日 = dateadd(d,-1,Dateadd(m,1,@P計算年月))
SET @O月末日 = day(@WK月末日)
return 0
-----------------------------------------
実際に使う場合は
declare @OT結果月末日 as int
EXEC 月末日計算 @P計算年月 = '2006/04/01',
@OT結果月末日 output
@P計算年月の日付部分は必ず 1日を指定してください。
もし、ストアドでなくクエリでというならば
Access ではP計算年月にはパラメータクエリで日付を設定してください。
SELECT P計算年月,CAST(dateadd(d,-1,Dateadd(m,1,計算年月))
as Datetime) as 計算年月月末日,
cast(day(CAST(dateadd(d,-1,Dateadd(m,1,計算年月))
as Datetime)) as int) as 月末日
もう少し具体的な使用目的などをがわかれば細かく説明できますが
日付のチェックをしたいなら ISDATE 関数でチェックできます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Excel(エクセル) Excelで在庫表(クエリ、ピボット) 2 2022/04/11 17:11
- Excel(エクセル) DATE関数で指定する「日」のセルが関数の場合の対処法 5 2022/09/14 15:46
- その他(データベース) Accessフォームにて指定のフィールドの平均値を小数点第一位で表示できない 2 2022/08/30 17:19
- Excel(エクセル) 【Excel】指定した文字列に該当する行を重複しないようにリスト 3 2022/03/30 12:27
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) エクセルのマクロ作成について教えてください 5 2023/02/20 00:39
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日付を昇順で並び替えし、空白...
-
Excel2000での日付計算について
-
クエリで日付型のIIF関数の使用
-
教えていただきたいです。acces...
-
日付のデータ型について
-
複数のクエリを結合して実行し...
-
ピポットテーブルの月のグルー...
-
年、月、日を分けて入力したも...
-
ファイルメーカー 実在の日付...
-
accessで残業時間計算
-
EXCELからACCESSへのインポート...
-
【Tableau Desktop】文字列から...
-
差し込み印刷で日付の曜日を表...
-
「Access2000」今ある和...
-
アクセス:エクセルからのイン...
-
日付/時刻型のフィールド検索
-
Accessで日付から曜日を自動で...
-
「24日の0時」って・・・
-
VBAでエクセルシートを更新...
-
パソコンで購入したデーターが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
日付を差し込み印刷で表示した...
-
ウィンドウィズ メモ帳で日付だ...
-
日付を昇順で並び替えし、空白...
-
差し込み印刷で日付の曜日を表...
-
Word2010 フィールド内での和...
-
Accessで秒を時間で表示させる...
-
重複を除外したカウント方法を...
-
クエリで日付型のIIF関数の使用
-
Wordの日付変換ってできますか?
-
日付型のテキストボックスに数...
-
日付がインポートされない
-
ACCESSの自動連番について
-
【Tableau Desktop】文字列から...
-
Wordで、ヘッダーに印刷日付を...
-
accessで残業時間計算
-
ファイルメーカーPro7でカレン...
-
挿入した日付の自動更新を中止...
-
Accessで日付から曜日を自動で...
-
ファイルメーカーで検索結果を...
-
ファイルメーカーの日付の検索
おすすめ情報