[三流君] −−> [ASPで遊ぶ、失敗する] −−> [バックナンバー一覧]
−−> No.031 DateAdd関数で日付や時間の計算

DateAdd関数で日付や時間の計算



本文(発行内容)


<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でした。


ページフッター

ここまで、読んでいただきどうもです。目的の情報が見つかったか?少々心配しつつ、、、

三流君へ メッセージを送る

感想や質問・要望・苦情など 三流君へメッセージを送る。
返信例 XXXXさんへ
下記のフォームからメッセージを送ることができます。


あなたのお名前(ニックネーム):さん
返信は?:

アドレス:に返事をもらいたい
感想や質問↓:


(感想や質問・要望・苦情はHPで記事に載せることがあります。)

種類別のリンク や 広告など

[三流君(TOP ken3.org へ戻る)] / [ASPで遊ぶ、失敗する] / [ASP記事 バックナンバー目次]


Blogとリンク:[三流君のMemo別館]/ [ASP 三流君のソースコード置き場]/ [Ken3Video YouTubeで動画解説]
広告:

気になった ジャンル ↓を選択してください。

まぁ、基本はデータの受け取りかなぁ。
・[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記事 バックナンバー目次]


広告: