簡體   English   中英

在mysql和其他條件中選擇最后插入的行

[英]selecting last inserted row in mysql and other conditions

我的表名為fiscalyear


這些是列

  • id(自動增量)
  • 開始(財政年度開始日期)
  • 結束(財政年度結束日期)
  • 有效(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版本格式的預訂日期。

如果你想在最后一排,你可以訂購通過DESC順序表id是自動遞增。

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

應該注意的是,BEGIN和END是MySQL中的保留字,應該用“`”表示為字段

至於打印日期,我推薦PHP類DateTime

通過id主鍵對其進行LIMIT 1 ,並使用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格式,則在格式字符串中使用%y小寫y

關於你的第二個問題,你可以在數據庫中定義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));
}

當你想在數據庫中插入一個新行時,你應該在SQL查詢中使用'date time field name' = NOW()

這是我需要的查詢

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

FROM 0_fiscal_year WHERE closed = 0 ORDER BY id DESC LIMIT 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM