如何从 mysql 数据库中只选择年份(但只选择包含数据的年份)?
SELECT DISTINCT(YEAR(datecolumn))
FROM mytable
我想按日期对数据进行分类(首先,用户选择年,然后是月,然后是日...)。我还希望能够使用类似的方法按月和/或天进行选择。
SELECT DISTINCT(MONTH(datecolumn))
FROM mytable
WHERE datecolumn >= CAST(CONCAT($year, '-01-01') AS DATETIME)
AND datecolumn < CAST(CONCAT($year + 1, '-01-01') AS DATETIME)
SELECT DISTINCT(DAY(datecolumn))
FROM mytable
WHERE datecolumn >= CAST(CONCAT_WS('-', $year, $month, '01') AS DATETIME)
AND datecolumn < CAST(CONCAT_WS('-', $year, $month, '01') AS DATETIME) + INTERVAL 1 MONTH
如果您将 PHP time() 返回的内容存储在您的列中,请使用:
SELECT DISTINCT(YEAR(FROM_UNIXTIME(datecolumn)))
FROM mytable
SELECT DISTINCT(MONTH(FROM_UNIXTIME(datecolumn)))
FROM mytable
WHERE datecolumn >= CAST(CONCAT($year, '-01-01') AS DATETIME)
AND datecolumn < CAST(CONCAT($year + 1, '-01-01') AS DATETIME)
SELECT DISTINCT(DAY(FROM_UNIXTIME(datecolumn)))
FROM mytable
WHERE datecolumn >= UNIX_TIMESTAMP(CAST(CONCAT_WS('-', $year, $month, '01') AS DATETIME))
AND datecolumn < UNIX_TIMESTAMP(CAST(CONCAT_WS('-', $year, $month, '01') AS DATETIME) + INTERVAL 1 MONTH)
注意我们这里使用的条件是sargable:datecolumn是表达式一侧唯一的东西,可以使用索引来搜索它。