• ベストアンサー

入力年月日から月初の日付を求めたいのです。

こんにちは。いつもお世話になります。 入力日付が、2003/01/10(yyyy/mm/ddの形式です)だとすると、その月の最初の日、 つまり2003/01/01を取得したいのですが、どうしたらうまくいくでしょうか? 年と月を取り出し、format関数で変数に入れようとしてみましたが、エラーになってしまいました。環境は、Access2000、winXPです。どなたかよい方法をご存知の方回答よろしくお願いします。

  • satie
  • お礼率90% (246/273)

質問者が選んだベストアンサー

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.5

#3です。 ごめんなさい。Access ですね。 でも同じ方法ですよ。 =[日付]-Day([日付])+1  でどうですか。

satie
質問者

お礼

こんにちは。指定した日付から日にちの数字を引いて、1を足すとその月の初めの日付になりますね。今回は勉強になりました。ありがとうございました!

その他の回答 (4)

  • hinebot
  • ベストアンサー率37% (1123/2963)
回答No.4

#1です。 ACCESSでしたね。EXCELと勘違いしてしまいました。;^^A #1の回答は無視してください。

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.3

セルA1に日付形式のデータがあるとして、 =A1-DAY(A1)+1 で如何でしょうか。

  • tyoufu
  • ベストアンサー率28% (19/67)
回答No.2

簡単な関数を使ってだったら CDate(Format("2003/01/10","yyyy/mm") & "/01") で出来ます

satie
質問者

お礼

こんにちは。CDateをすっかり忘れていました!ばっちりできました。ありがとうございます。

  • hinebot
  • ベストアンサー率37% (1123/2963)
回答No.1

セルA1に 2003/01/10 が入っているとし、セルB1に2003/01/01 を取得するとします。 セルB1のセル書式をセルA1と同じにしておいてから =EOMONTH(A1,-1)+1 としてみてください。 EOMONTH(A1,-1) で、1つ前の月の月末日がでるので、それに1を足して、月初を出してます。

satie
質問者

お礼

こんにちは。早速の回答ありがとうございます。セルって書いてあるから、もしかして・・・と思ったのですが、エクセルだったのですね。AccessでもEOMONTHはあるみたいですけど、エラー値#NAME?が返ってきてしまって、ヘルプによると、officeを再インストールしなければならないらしいです。 エクセルはあまり使うことがないので勉強になりました。ありがとうございました。

関連するQ&A

  • EXCEL 日付の入力形式

    こんにちは。 日付が、dd/mm/yyyyの形式で入力されたデータをもらいました。 関数を利用したいのでEXCELに日付として認識させたいのですが、 セルの書式設定で設定してもだめなようです。 質問 1)yyyy/mm/ddの形式で入力されていないと日付として認識されないのでしょうか? 2)現在の形式のまま、日付として認識させる方法はありますか? 3)dd/mm/yyyyをyyyy/mm/ddに変換する方法はありますか? 以上、よろしくお願いします。

  • 日付入力

    テキストボックスにYYYY/MM/DDの形式で入力します。 入力中に、YYYYが入力されたら自動的にスラッシュを付け加えて、またMMと入力したらスラッシュが自動的に入るようにしたいです。その過程で、日付のチェックも同時に行ないたいです。 どう書けばよいのでしょうか。ぜひ教えてください。お願いします。

  • ACCESS フォームで入力した日付をクエリで読み

    ACCESS フォームで入力した日付をクエリで読み替えたい ACCESS フォームで入力した日付をクエリで使用しているテーブルの書式に変換したい フォーム テキスト名:日付にyyyymmdd で入力します クエリ テキスト名:日付はパラメータとして使用しています クエリ内で使用しているテーブルの日付書式は 日付:yyyy/mm/ddです パラメータは 「日付始」と「日付終」の2箇所のテキストに入力されたデータを使用しています。以下がパラメータです。 Between [Forms]![フォーム]![日付始] and [Forms]![フォーム]![日付終] フォームのテキストボックスにyyyymmddと入力してもクエリでエラーが出ることない パラメータを日付に設定したいのですがどうしたらよいでしょうか? ちなみに、以下の式を入れたらエラーです。 Between CDate(Format([Forms]![フォーム]![日付始],"yyyy/mm/dd")) and CDate(Format([Forms]![フォーム]![日付始],"yyyy/mm/dd")) と入力しましたところ、、、、「式が複雑すぎるか、、、」のエラーメッセージが出てしまいました。 どなたか助けてください。お願い致します。

  • 日付型→文字列

    SQLServer2005の環境にて、 日付型の項目(YYYY/MM/DD HH:MM:SS)から日付のみを抽出したい場合、 現在SUBSTRING(CONVERT(VARCHAR,AA),1,10) と変換を行っているのですが、結果が「MM DD YYYY」となってしまいます。 「YYYY/MM/DD」の形式で取得するにはどのようなSQL文にすればよろしいのでしょうか。

  • 入力された日付の正規表現の仕方を教えて下さい。

    こんばんは、いつもお世話になっております。 過去ログをあさってみたのですが、探し方が悪いのか 見つけられず…。 どうかご指導よろしくお願い申し上げます。 フォームに入力された値のチェックを、CGIに渡す前に ジャバスクリプトでもチェックしたいと思っています。 未入力や半角英数字以外のエラーチェックは出来たのですが yyyy/mm/dd形式で日付の入力をして欲しい時の チェックの書き方がわかりません。 私なりに色々と調べてみて、 if(myForm.day.value.match(/^[0-9]{4}\/[0-9]{2}\/[0-9]{2}$/)){ alert("日付は半角でyyyy/mm/dd形式でご記入下さい"); return false; } と記述してみたのですが、9999/99/99のような、ありえない 日付でも通ってしまいます。 そればらば、とおもい if(myForm.day.value.match(/^[2-3][0-9][0-9][0-9]\/[0-1][0-9]\/[0-3][0-9]$/)){ alert("日付は半角でyyyy/mm/dd形式でご記入下さい"); return false; } と書いてみたのですが、こちらはエラーが出ました(泣) どうか、ご指導よろしくお願い申し上げます。

  • 変数に昨日の日付を入力したい

    XP Excel2003を使っています day_z = Format(Now, "yyyy/mm/dd")で当日の日付を入力していますが、これを昨日の日付で入力したいのですがよろしくお願いします。

  • 日付型の入力値チェック

    こんにちは。 下記のようなフォーマットで日付型のチェックをしたいと 思っています。最低限(1)YYYYが入力されていればOKで、 最高だと(8)YYYY-MM-DDThh:mm:ss.sTZDまで入力可能です。 この日付が妥当であれるかどうかの判定はどのように するのが良いでしょうか? YYYY[-MM[-DD[Thh[:mm[:ss[.s[TZD]]]]]]] (1)YYYY (2)YYYY-MM (3)YYYY-MM-DD (4)YYYY-MM-DDThh (5)YYYY-MM-DDThh:mm (6)YYYY-MM-DDThh:mm:ss (7)YYYY-MM-DDThh:mm:ss.s (8)YYYY-MM-DDThh:mm:ss.sTZD ちょっと考えたのは、まず、長さを見て各文字列を パースして各場所の数値の妥当性をチェックって 言うものです。これでも出来そうな気もしますが、 他にも良いやり方などありましたら、 ご教示宜しくお願い致します。

    • ベストアンサー
    • Java
  • ACCESSの日付形式

    テーブルに日付形式のフィールドがあり、エクスポートすると、形式がyyyy/mm/dd hh:mm:ddになってしまいます。 yyyy/mm/dd形式でエクスポートするには、どのようにしたらよいでしょうか。 VBAのDocmd.TransferTextで行いたいと思います ちなみにAccess97です。 よろしくお願いします

  • シェルスクリプト:入力した日付のチェック

    BourneShell勉強中の初心者のものです。 ユーザーが(yyyy-mm-dd)の形式で入力した日付に対して、日付が指定されたフォーマットにあいかつ範囲以内であることチェックして、次のステップに進みます。 1月から12月まで毎月31日まであるものとみなし、1000年から9999年までが範囲内です。 以下のようなスクリプトを書いたのですが、もう少し短くすっきりとできないでしょうか?何か他に方法があればご教授お願いします。 echo "日付を入力してください(yyyy-mm-dd):\c" read hiduke case $hiduke in [1-9][[0-9][0-9][0-9]-0[1-9]-0[1-9]) break ;; [1-9][[0-9][0-9][0-9]-1[0-2]-0[1-9]) break ;; [1-9][[0-9][0-9][0-9]-0[1-9]-[1-2][0-9]) break ;; [1-9][[0-9][0-9][0-9]-1[0-2]-[1-2][0-9]) break ;; [1-9][[0-9][0-9][0-9]-0[1-9]-3[01]) break ;; [1-9][[0-9][0-9][0-9]-1[0-2]-3[31]) break ;; "") echo "入力されていません" ;; *) echo "指定外です" ;; esac

  • 地域言語オプションの日付形式を用いての日付編集方法

    コントロールパネルの地域と言語オプションから 地域オプションのカスタマイズ内の日付タブにある 短い形式を元に日付の編集を行おうとしています。 しかしこのまま短い形式をしようすると、 「年月日」の形式を取得してしまいます。 今回の用件では「年月」のみ必要なので「日」の形式を除外した形式で 日付の編集を行う必要があります。 ただしコントロールパネルから日付の形式が変更できる為、 各クライアントの端末毎に日付の形式が異なる為(※1) 単純に文字列の編集で「年月」を取得することが出来ず困っております。 ※1 クライアント毎の日付形式の例と行いたい変換後の形式の例 短い形式 → 変換後の形式 yyyy/MM/dd → yyyy/MM yy/M/d   → yy/M yy/MM/dd' ('ddd')' → yy/MM/ dd/MM/yyyy → dd/yyyy 開発言語は VisualStudio2008 C# で開発を行っています。 皆さんのお力をお貸しいただけないでしょうか。

専門家に質問してみよう