[mysql][さくら対策] 指定した月の最終日を取得する

2007.10.15(月) 7:41   タグ: 覚え書き, MySQL

メモ.LAST_DAY 関数が使えないさくらへの対策として.

YYYYMM月の最終日の取得には,version 4.1.1 以降であれば

SELECT DATE_FORMAT( LAST_DAY( YYYYMM01 ), ‘%d’ );

で済みますが,version 4.0 系な現在レンタルちゅうのさくらサーバではこれが使えません.そんなときは,

SELECT DATE_FORMAT( DATE_SUB( YYYYMM01 + 100, INTERVAL 1 DAY ), ‘%d’);
SELECT DATE_FORMAT( DATE_SUB( DATE_ADD( YYYYMM01, INTERVAL 1 MONTH ), INTERVAL 1 DAY ), ‘%d’);

とすれば OK です.

先の記述だと,12月の場合に NULL になってしまうため,修正しました.

mysql> SELECT DATE_FORMAT( LAST_DAY( 20080201 ), '%d' ) AS 'last day of 200702';
+——————–+
| last day of 200702 |
+——————–+
| 29                 |
+——————–+
1 row in set (0.00 sec)

mysql> SELECT DATE_FORMAT( DATE_SUB( 20080201 + 100, INTERVAL 1 DAY ), ‘%d’ ) AS ‘last day of 200702′;
mysql> SELECT DATE_FORMAT( DATE_SUB( DATE_ADD( 20080201, INTERVAL 1 MONTH ), INTERVAL 1 DAY ), ‘%d’ ) AS ‘last day of 200702′;
+——————–+
| last day of 200702 |
+——————–+
| 29                 |
+——————–+
1 row in set (0.00 sec)

mysql>

ページナビゲーション実装メモ

2007.4.2(月) 13:18   タグ: Perl, MySQL
ページナビゲーション.

ページナビゲーションを実装するにあたっての脳内整理的メモ.Perl っぽい表記になってますので,頭の中で適当に置き換えてください.

$N 個 (インデックスは 0, 1, …, $N-1) のオブジェクト (例えば写真とか) を,$n 個ずつ表示させる場合のページナビゲーションについて考えます.

この場合の全ページ数 $P は

$P = int( $N / $n ) + 1;

となります.

$p ページ目 (1 ≤ $p ≤ $P) におけるページナビゲーションな HTML 文字列を返すサブルーチン pagenavi を次のように定義できます.

# $pagenavi = pagenavi( $N, $n, $p ); な感じで
sub pagenavi {
  my ( $N, $n, $p ) = @_;
  my $html = '';
  my $P = int( $N / $n ) + 1;
  for( my $i = 1; $i < = $P; $i++ ) {
    if( $i == $p ) {
      # 現在のページの処理:リンクを張らないとか,文字を大きくするとか
      $html .= qq{<span class="currentpage">$i</a>};
    }
    else {
      # 他のページの処理:リンクを張るとか
      $html .= qq{<a href="?page=$i">$i</a>};
    }
  }
  return $html;
}

余談ですが,$p ページ目に表示させるべきオブジェクトのうち,最初のインデックス $i0は

$i0 = ( $p - 1 ) * $n;

で得られます.したがって,

for( my $i = $i0; $i < $i0 + $n; $i++ ) {
  my $obj = $objlist[$i];
  ...
}

のようにすることで,オブジェクトリストのうちの該当部分のみを処理することができます.また,SQL でデータベースからデータを取り出す場合には,

SELECT ...
  FROM ...
  WHERE 1
  LIMIT $i0, $n;

などとすればいいでしょう.

さて,先の pagenavi では,オブジェクトの数 $N の増加に伴ってページ数 $P も増加するため,扱いづらいとかスペースを取るとかの不都合が出てきます.

ページ数が増え,いろいろ不都合なページナビゲーション.

記事の続き

データベースに画像を格納する with Perl+DBI+MySQL

2007.3.22(木) 5:16   タグ: Perl, MySQL

画像(をはじめとするバイナリデータ,以下,画像)を管理するようなアプリケーション (というほと大げさではありませんが) を設計するときには,情報 (MIME タイプとかデータサイズとか) のみをデータベース(以下,DB) に格納し,データはファイルとして特定の場所へ保存する,といった方法を,今までとってきました.

この場合,管理するべき場所が 2か所あるわけですが,そんな管理がだんだんと手間に思えてきたので,管理をひとまとめにすべく,画像データを DB に格納する練習をしてみました.
記事の続き

ぶろぐ内検索

WCAN 2008 Winter

wcan2008winter

DeLLa.JS

細々公開ちゅう

  • DQWindowManager
  • ごよてい?
  • にこぐらふ
  • twitomonitor [ついともにた]
  • issm's ...
  • 今さら攻略 スーパーマリオブラザーズ 2

I'm doing...

Loading...

最近のエントリ

最近のトラックバック

最近のコメント

タグ

月別

あわせて読みたい

あわせて読みたいブログパーツ

数値いくつか

  • issmの泳いだ距離
  • issmの100m個メタイム(秒)
  • issmのBMIとissmの体脂肪率
  • issmの最高血圧とissmの最低血圧

スポンサード リンク

メタ情報