<DateAdd関数で日付や時間の計算>
こんにちは、Ken3です。
今回は、
DateAdd関数で日付や時間の計算
をしてみたいと思います。
と言っても、たいしたことないのでご安心を。
/*
* 1.DateAdd関数の使い方
*/
DateAdd(単位,増減値,基準となる日付・時刻)
で
簡単にできるみたいです。
ポイントは
^^^^^^^^^^
単位は、
y 年
m 月
d 日
h 時
n 分
s 秒
で(他にも四半期などあります)。
増減値の指定をプラス、マイナスの値で計算ができます。
簡単なサンプルは、
<%
Response.Write "現在時刻は、" & Now & "です<br>"
Response.Write "6時間後は、" & DateAdd("h", 6, Now) & "です<br>"
Response.Write "5日前は、" & DateAdd("d", -5, Date) & "です<br>"
%>
な感じで使用すると、結果は、
現在時刻は、2003/01/08 18:21:33です
6時間後は、2003/01/09 0:21:33です
5日前は、2003/01/03です
となります。
有効期限一週間とか最近(過去3日)に投稿された質問、、
と
日付の計算で使ってみてください。
テストは、
http://www.ken3.org/cgi-bin/test/test031-1.asp
で、出来ます。
/*
* 2.SQLの条件で使ってみる
*/
データベース名:db029.mdb
テーブル名:KANSOU
フィールド
ID オートナンバー型
F_KUBUN テキスト型 ASP,VBA,GUCHI,24Hと4つの区分
F_NO 整数型 0:は全体に対して、1〜はX話にする
F_MEMO テキスト型 一言メッセージ
WriteTime 日付型 書き込み日付
上記、データベースがあって、
http://www.ken3.org/cgi-bin/test/test029-1.asp
でいままで書き込まれた感想を表示しています。
今まで書き込まれたご意見・感想
日付 区分 NO. 感想
2003/01/06 16:47:38 24H 全体 コンビニと環境問題、、、
2003/01/06 16:47:02 VBA 全体 VBA系もがんばろう
2003/01/06 16:46:40 ASP 全体 テストデータを作成
2003/01/02 20:45:28 24H 全体 ssssss
2003/01/02 20:45:02 GUCHI 全体 テスト
3日前までの感想を表示するSQLを発行するために、
今回のDateAddを使用してみます。
<%@LANGUAGE=VBScript%>
<html>
<head>
<title>DateAdd関数を使用して3日前までのデータ表示</title>
</head>
<body>
<h2>DateAdd関数を使用して3日前までのデータ表示</h2>
test031-2.asp<br>
<hr>
<%
Call TEST_PRINT() '関数にまとめた。
%>
<HR>
終了です。<br>
<% Call OUT_SRC("DateAdd") 'ソースの表示関数を呼ぶ %>
</body>
</html>
<% '3日前を条件にして、SQLを発行
Sub TEST_PRINT()
'ADO DB Connection オブジェクトを作成する、英文そのままじゃん
Set db=Server.CreateObject("ADODB.Connection")
'.Provider?プロバイダー?通信会社?じゃなくって
'データアクセスにはJet.OLEDB.4.0を使うことを設定
db.Provider = "Microsoft.Jet.OLEDB.4.0"
'次に、接続DBの位置を渡すので、Server.MapPathで変換して渡す
db.ConnectionString = Server.MapPath("db029.mdb")
'やっとデータベースを開ける
db.open
'SQL文を作る
strSQL = "Select * From KANSOU " '感想(KANSOU)テーブルから全項目(*)セレクト
strSQL = strSQL & "WHERE WriteTime >= #" & DateAdd("d",-3, Date) & "# "
strSQL = strSQL & "ORDER BY WriteTime DESC" '並べ替えは時間の降順
'中身を確認で表示
Response.Write "発行するSQL文は[" & strSQL & "]です。<BR>"
'お約束のレコードセットの作成 SQL文の発行
Set rs = db.Execute(strSQL)
'データの表示をテーブルで行う
Response.Write "<TABLE Border='1'>"
'見出しをバカっぽく、そのまま書き込む
Response.Write "<TR>"
Response.Write "<TD>日付</TD>"
Response.Write "<TD>区分</TD>"
Response.Write "<TD>NO.</TD>"
Response.Write "<TD>感想</TD>"
Response.Write "</TR>"
'お約束のEOFまでループは(データが無くなるまでループ)、
Do While rs.EOF = False 'レコードセットの.EOFがFalseの間
Response.Write "<TR>" '内容を表示する、行開始のタグ<TR>
Response.Write "<TD>" & rs.Fields.Item("WriteTime") & "</TD>"
Response.Write "<TD>" & rs.Fields.Item("F_KUBUN") & "</TD>"
If rs.Fields.Item("F_NO") = 0 Then '0の全体かチェック
Response.Write "<TD>全体</TD>"
Else
Response.Write "<TD>" & rs.Fields.Item("F_NO") & "</TD>" 'NO表示
End If
Response.Write "<TD>" & rs.Fields.Item("F_MEMO") & "</TD>"
Response.Write "</TR>"
'次のレコードにポインタを移動する
rs.MoveNext 'これを忘れると悲惨なことに、、、
Loop
Response.Write "</TABLE>" 'テーブルは終わりです
'開いていたレコードセットを閉じる
rs.Close
'データベースも閉じようよ
db.Close
'お行儀よくオブジェクトも開放しましょう(通常は自動的に解放されるけど)
Set db = Nothing
End Sub
%>
ポイントは
^^^^^^^^^^
'SQL文を作る
strSQL = "Select * From KANSOU " '感想(KANSOU)テーブルから全項目(*)セレクト
strSQL = strSQL & "WHERE WriteTime >= #" & DateAdd("d",-3, Date) & "# "
strSQL = strSQL & "ORDER BY WriteTime DESC" '並べ替えは時間の降順
の
"WHERE WriteTime >= #" & DateAdd("d",-3, Date) & "# "
で、
WriteTime 日付型 書き込み日付
が、3日前を条件にしたいので、
DateAdd("d",-3, Date)
と関数を使って計算してます。
日付型は#で囲むのも注意点かなぁ。
まぁ、DateAdd単体テストだけだとさびしかったのでおまけでした。
テストは、
http://www.ken3.org/cgi-bin/test/test031-2.asp
で、出来ます。
/*
* 3.終わりの挨拶
*/
今回は、
DateAdd関数の簡単な説明でした。
今後は、SQLでUPDATEの更新、DELETEで削除をやってから、
何か作ってみたいですね。
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記事 バックナンバー目次]