0

日付を VARCHAR として mysql テーブルに保存しています。私は実際に、請求書の詳細とその日付を格納する請求書テーブルを持っています。これらの日付をphpのこの関数でVARCHAR列に保存します。

date("d/m/y")

ここで、2012 年 4 月 5 日から 2013 年 4 月 5 日までの売上レポートを生成する必要があります。日付範囲を見つける方法について混乱しています。ガイドしてください。

コードイグナイターを使用しています。

4

4 に答える 4

1

日付の場合は、日付として保存してみませんか? 別の列を追加し、スクリプトまたはプログラムを使用して、この新しい列に解析および再構成された日付を入力できます。したがって、将来のクエリは日付データ型で機能します。

于 2013-02-26T07:09:33.123 に答える
0

ここでは、明示的な回答ではなく、提案を提供しています。

日付を varchar として保存する特定の理由はありますか。少なくとも整数として格納することは、varchar よりも理にかなっています。データベースを作り直すことはできますか? 日付を日付 yyyy-mm-dd として保存します。それとも現時点では完全に不可能ですか?

上記のフォーマットを表示したい場合は、

<?php list($year, $month, $day) = explode("-", $date) ?>

次のように表示するために並べ替えます

<?php echo $day."/".$month."/".$year ?>

データベースを作り直すことが完全に不可能な場合は、MYSQL STR_TO_DATE を使用してください

このリンクが役立つかどうかを確認してください: http://www.w3resource.com/mysql/date-and-time-functions/mysql-str_to_date-function.php

[編集]

<?php
$date_from = '26/02/13';
$date_to = '26/02/13';

//Because STR_TO_DATE would create a valid date from what you have in varchar.
list($day, $month, $year) = explode("/", $date_from);
$date_from = $year . "-" . $month . "-" . $day;
list($day, $month, $year) = explode("/", $date_to);
$date_to = $year . "-" . $month . "-" . $day;

$this->db->where('STR_TO_DATE(`date`,"%d/%m/%y") >=', $date_from);
$this->db->where('STR_TO_DATE(`date`,"%d/%m/%y") <=', $date_to);
$query = $this->db->get('TABLENAME');

//use your result here
?>
于 2013-02-26T07:54:04.583 に答える
0

char から timestamp までの日付を取得できると思います。もちろん、日付のフォーマットを行う必要があります...

ここにいくつかのサンプルがあります...

$senttime = strtotime($date . ' ' . $hour . ':' . $min . ':00');
$exdate   = strtotime($exdate . ' 00:00:00');
$now      = strtotime("now");

if ($now < $senttime && $senttime < $exdate) {...

あなたが範囲を得ることができるより...

于 2013-02-26T07:11:26.627 に答える
0

MySQL のビルトイン文字列を日付解析に使用する

SELECT * FROM your_table WHERE STR_TO_DATE(`date_column`,'%d/%m/%Y') BETWEEN '2012-04-05' to '2013-04-05'

またはCI ActiveRecordで

$this->db->select('*')
$this->db->from('your_table');
$this->db->where('STR_TO_DATE(`date_column`,"%d/%m/%Y") >=', '2012-04-05');
$this->db->where('STR_TO_DATE(`date_column`,"%d/%m/%Y") <=', '2013-04-05');
$query = $this->db->get();
$results = $query->result();
于 2013-02-26T07:16:59.820 に答える