<日付関係の復習、YYYYMMDDを返すFunction関数を作成する>
こんにちは、三流プログラマーのKen3です。 今回は、 日付、時刻関係の関数の復習 と VBScriptにVBAでよく愛用していたFormat関数が使えないので、 自作でYYYYMMDDを返すFunction関数を作成してみます。/* * 1.今回のキッカケ */
HPで訪問者のログを収集してます。 http://www.ken3.org/cgi-bin/cnt/log100.asp リンク元、GoogleやYahooからの探し物のお客さんが意外と多いです。 で、最近、よく見かけるのが、 http://www.google.co.jp/search?hl=ja&ie=UTF-8&q=ASP+Format&lr=lang_ja と ASP Formatとキーワードにして私のページにたどり着く人です。 ADO から MDB へのSQL文でFormat関数使用 http://www.ken3.org/cgi-bin/test/test040-1.asp が、検索に引っかかってしまいます。 ADOのSQL文で使用可能な例題、 Select Format(WriteTime, 'YYYYMMDD') AS YYYYMMDD, Count(*) AS CNT From log GROUP BY Format(WriteTime, 'YYYYMMDD') が拾われてしまうみたいです。 ※Format関数、ASP(VBScript)には無いです、 そして、訪問者は、 ちぇ、期待してきたけど時間つぶしてしまった。。。 ~~~~~~~~~~ と去って行くのであった。(マル) 少しでもお客さんを取り込むには、品揃えを充実させよう。 ってことで、復習を兼ねてYYYYMMDDを返す自作関数を作ってみます。 ※Format関数って、12.5とか数値も扱ってたし、yyyy-mm-dd形式も? って心の中で叫ばないでね・・・/* * 2.事前調査、各部分を取り出す関数を調べる */
ASP,VBScriptでFormat関数使えないんだよなぁ。。。 日付関係の関数を駆使して、文字列を作成するか。 えっと、現在時刻はNow関数でわかるから、 あとはこれを変換しながら、調べた関数をチェックしますか。 年 Year() 月 Month() 日 Day() 曜日 Weekday() 1:日曜〜7:土曜の数値を返す WeekDayName(数値)で曜日文字 時 Hour() 分 Minute() 秒 Second() と、いろいろな変換関数存在するので、 関数に日付の値を渡すと変換できそうです。 http://www.ken3.org/cgi-bin/test/test062-1.asp で、下記のテストプログラムを実行可能です。 <%@LANGUAGE=VBScript%> <html> <head> <title>VBScript/Year/Month/Day/WeekDay/Hour/Minute/Secound 関数使用例</title> </head> <body> <h2>VBScript関数<br>Year/Month/Day/WeekDay/Hour/Minute/Secound 関数使用例</h2> <!-- Ken3 --><!-- #include file="info.inc" --> <br> 現在時刻を返すNow関数と組み合わせて下記の関数を使用してみました。<br> <hr> 年 Year(変数や値)=<%=Year(Now)%><br> 月 Month(変数や値)=<%=Month(Now)%><br> 日 Day(変数や値)=<%=Day(Now)%><br> 曜日 Weekday(変数や値)=<%=Weekday(Now)%>(←1:日曜〜7:土曜の数値)<br> 曜日の名前 WeekdayName(1〜7)=<%=WeekdayName(Weekday(Now))%><br> ※通常日付を渡すんだけど、↑WeekdayNameだけ数値に対応した曜日文字を返す<br> <hr> 時 Hour(変数や値)=<%=Hour(Now)%><br> 分 Minute(変数や値)=<%=Minute(Now)%><br> 秒 Second(変数や値)=<%=Second(Now)%><br> <hr> <br> </body> </html>/* * 3.2003/6/5を20030605と一桁の月日は頭0を付ける */
あとは組み合わせて、一桁の時、頭0付けかぁ。 Right("0" & 変数, 2) と小細工で、0と+してから、右端から2文字取るかな。 T = Now() strMM = Right("0" & Month(T)), 2) strDD = Right("0" & Day(T)), 2) YYYYMMDD = Year(T) & strMM & strDD うわ、なんかダサ(笑) ここまで来たら、関数名もFormatYYMMDD(引数)でイイヤ 値を返すんだからFunctionの関数にしてと、 下記のようにしてみました。 http://www.ken3.org/cgi-bin/test/test062-1.asp で、下記のテストプログラムを実行可能です。 <%@LANGUAGE=VBScript%> <html> <head> <title>YYYYMMDDの文字列を返す関数を作ってみた</title> </head> <body> <h2>YYYYMMDDの文字列を返す関数を作ってみた</h2> <!-- Ken3 --><!-- #include file="info.inc" --> <br> 日付を渡すと、YYYYMMDDの形式で文字列を返す関数<br> その名もFormatYYYYMMDD(笑)<br> <hr> FormatYYYYMMDD(Now)は<%=FormatYYYYMMDD(Now)%>と変換される。<br> ログファイル名を作るときは、<br> strLOGNAME = FormatYYYYMMDD(Now()) & ".log" なんて使う<br> <% strLOGNAME = FormatYYYYMMDD(Now()) & ".log" %> <%=strLOGNAME%><br> <hr> なんかなぁ、、、もっと勉強して、使える関数作らないとなぁ。<br> <hr> <br> <!-- Ken3 --><% Call OUT_SRC("") 'ソースの表示関数を呼ぶ %> <!-- Ken3 --><!-- #include file="inc_mokuji.inc" --> </body> </html> <!-- Ken3 --><!-- #include file="out_src.inc" --> <% '受け取った日付データを変換してYYYYMMDDの文字列で返す%> 頻繁に、変換処理しないと、あまり関数化の意味無いかなぁ。
Function FormatYYYYMMDD(cnvMOTO) '念のため日付型に変換可能かチェックする If IsDate(cnvMOTO) = False Then FormatYYYYMMDD = "" '変換エラーの時は空文字を返すようにする Else strMM = Right("0" & Month(cnvMOTO), 2) '月の変換 strDD = Right("0" & Day(cnvMOTO), 2) '日の変換 'リターン値で結果を返す FormatYYYYMMDD = Year(cnvMOTO) & strMM & strDD End If End Function/* * 4.終わりの挨拶 </HTML> */
ほんとは、偽のSQL文とか使って、 ADOでFormat関数を使えないかなぁと探ったけど、断念しました。 で、 なんか今回は、単なる日付関数紹介でした。 何かの参考となれば幸いです。 ASP、VBScript勉強中の三流プログラマーのKen3でした。
ここまで、読んでいただきどうもです。目的の情報が見つかったか?少々心配しつつ、、、
感想や質問・要望・苦情など 三流君へメッセージを送る。
下記のフォームからメッセージを送ることができます。
[三流君(TOP ken3.org へ戻る)]
/ [ASPで遊ぶ、失敗する]
/ [ASP記事 バックナンバー目次]
まぁ、基本はデータの受け取りかなぁ。
・[Form等を使用したデータのやり取り]・・・ASPと言っても、HTMLの入力フォームからデータを受け取ります。POSTやGETでやりとりを押さえますか。
次は、データの入出力 で ADOを使った(ADOで接続) と SQLの解説を少々
・[ADOでMdbファイルを使う]・・・MDBと接続して、簡単な追加・更新・削除を行った。
・[ADOでExcelと接続してみた]・・・.xlsと接続してSQLを使ってみた。
・[ADOでCSVと接続してみた]・・・.CSV テキストを読み出した。※更新・削除はできません
広告:
DBが使えるので、あまり使用しないけど、普通のテキストファイル処理
・[テキストファイル処理]・・・ファイルを開いて、書き込む。1行読み込みなどを軽く
VBScriptでFormat関数が無いなど、微妙にVBAと違うけど
[VBScript関数関係の説明]・・・少し、処理を書いてみた。
[その他処理サンプル]・・・あまり良いサンプル作れなかったけど。。。
何かの参考となれば幸いです。
[三流君(TOP ken3.org へ戻る)]
/ [ASPで遊ぶ、失敗する]
/ [ASP記事 バックナンバー目次]