[英]selecting last inserted row in mysql and other conditions
這些是列
有效(0(開放)或1(關閉))
begin列包含2012-01-01之類的日期
我想獲得財政年度的開始和結束日期
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.