MySQL的select中选择性返回字段,根据当前日期设置需要返回的字段,比如今天是5日,返回的字段有one、two、three、four、five五个字段,若今天是8日,则返回以1到8的英文单词命名的八个字段
时间: 2024-12-12 12:31:56 浏览: 8
详解Mysql中日期比较大小的方法
在MySQL中,你可以通过动态SQL结合IF条件语句或者CASE表达式来实现按日期选择返回特定字段的功能。这里有一个简单的示例,假设你有一个表`my_table`,其中包含`one`, `two`, `three`, `four`, `five`, `one_to_eight`等字段,并且`date_field`记录了日期信息。
如果你想基于当前日期返回对应的字段,可以创建一个存储过程或直接在查询中编写这样的逻辑:
```sql
DELIMITER //
CREATE PROCEDURE get_fields_by_date()
BEGIN
DECLARE today INT;
SET today = DAY(CURRENT_DATE());
IF today BETWEEN 1 AND 5 THEN
SELECT one, two, three, four, five FROM my_table;
ELSEIF today BETWEEN 6 AND 8 THEN
SELECT `one`, `two`, `three`, `four`, `five`, `six`, `seven`, `eight` FROM my_table;
END IF;
END //
DELIMITER ;
-- 或者直接在查询中
SET @sql = CONCAT('SELECT ',
CASE WHEN DAY(CURRENT_DATE()) BETWEEN 1 AND 5 THEN 'one, two, three, four, five'
WHEN DAY(CURRENT_DATE()) BETWEEN 6 AND 8 THEN 'one, two, three, four, five, six, seven, eight'
END,
' FROM my_table');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
```
阅读全文