这些是
列有效(0(开放)或1(已关闭))
开始列包含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版打印本格式的预订日期..
答案 0 :(得分:2)
如果你想要最后一行,你可以按id
的顺序按DESC顺序订购表,这是自动增量。
SELECT `BEGIN`,`END`
FROM `fiscalyear`
WHERE `active`='0'
ORDER BY `id` DESC
LIMIT 1
应该注意,BEGIN和END是MySQL中的保留字,应该用“`”表示为字段
至于打印日期,我推荐PHP类DateTime
答案 1 :(得分: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
格式,请在格式字符串中使用%y
小写y
。
答案 2 :(得分:0)
关于你的第二个问题,你可以在数据库中定义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()
。
答案 3 :(得分:0)
SELECT
CONCAT(DATE_FORMAT(`BEGIN`, '%Y'), '-',
DATE_FORMAT(`END`, '%y')) AS mydates
这
0_fiscal_year
哪里
closed
= 0
订购
id
DESC
限制1