0

私はテーブル名会計年度を持っています


これらは列です

  • id(自動インクリメント)
  • begin (会計年度の開始日)
  • end(会計年度末日)
  • アクティブ (0 (オープン) または 1 (クローズ))

  • begin 列は 2012-01-01 のような日付で構成されます

  • 終了列は 2013-12-31 のような日付で構成されます

会計年度の開始日と終了日を取得したい

これらが条件です

  1. 開いている、つまり0、
  2. また、最後に挿入する必要があります。

ここに私が試したクエリがあります私の条件に従って私のクエリを更新してください

SELECT CONCAT(BEGIN,'/',END) AS YEAR FROM fiscalyear WHERE active='0' ORDER BY `id` DESC LIMIT 1

上記のクエリは、この形式で日付を選択します: 2012-01-01/2013-12-31 しかし、これの代わりに、選択した日付をこの形式 2012-13 で印刷したい..

4

4 に答える 4

2

id最後の行が必要な場合は、自動インクリメントであるDESC 順でテーブルを並べ替えることができます。

SELECT `BEGIN`,`END` 
FROM `fiscalyear` 
WHERE `active`='0' 
ORDER BY `id` DESC
LIMIT 1

BEGIN と END は MySQL の予約語であり、「`」を使用してフィールドとして表す必要があることに注意してください。

日付の出力に関しては、PHP クラスDateTimeをお勧めします。

于 2012-11-25T17:41:46.723 に答える
0

これが私が必要とするクエリです

SELECT
CONCAT(DATE_FORMAT(`BEGIN`, '%Y'), '-',
DATE_FORMAT(`END`, '%y')) AS mydates

FROM 0_fiscal_year WHERE closed= 0 id説明による注文 制限 1

于 2012-11-25T19:54:41.580 に答える
0

id主キーで並べ替え、を使用すると、LIMIT 1最後のレコードのみが取得されます。ビルトインを使用しDATE_FORMATて日付をフォーマットします。

SELECT
    CONCAT(DATE_FORMAT(`BEGIN`, '%Y'), '-',
    DATE_FORMAT(`END`, '%Y')) AS mydates
FROM
    `fiscalyear`
WHERE
    `active` = 0
ORDER BY
    `id` DESC
LIMIT 1

編集:年を連結するようにクエリを変更したため、出力されます2012-2013。結果は になりますmydates。書式では13なく終了年を使用する場合は、書式文字列に小文字を使用します。2013%yy

于 2012-11-25T17:44:27.527 に答える
0

2番目の質問については、データベースでBeginとEndをDateTimeとして定義できます(このようなデータ型はmySQLで定義されていたことを覚えています)。次に、この関数を使用できます。

/* Analyzes time-date and returns mktime!*/
function analyze_time_date($tdstr)
{
    // tdstr : 2010-08-12 11:41:14
    //         0000000000111111111
    //         0123456789012345678
    $year   = (int)substr($tdstr,0,4);
    $month  = (int)substr($tdstr,5,2);
    $day    = (int)substr($tdstr,8,2);

    $hour   = (int)substr($tdstr,11,2);
    $minute = (int)substr($tdstr,14,2);
    $second = (int)substr($tdstr,17,2);

    return mktime($hour,$minute,$second,$month,$day,$year);
}

/*  */
function format_time_date($tdstr,$format)
{
        return date($format,analyze_time_date($tdstr));
}

データベースに新しい行を挿入する場合'date time field name' = NOW()は、SQL クエリで使用する必要があります。

于 2012-11-25T17:47:14.153 に答える