选择日期/日期时间字段SQL

时间:2013-10-09 21:25:15

标签: mysql sql

show fields from table where type in ('date', 'datetime')

返回我想要的字段,是否有办法将此输出放入:<​​/ p>

select * from table

即。替换*?

2 个答案:

答案 0 :(得分:3)

可能不是最优雅的解决方案,但这应该有用。

/* set your values */
SET @tablename = 'mytablename';
SET @schemaname = 'mydbname';
/* end */

SET @columns = '';
SET @query1 = '
(SELECT
    GROUP_CONCAT(`COLUMN_NAME`) INTO @columns 
FROM 
    `information_schema`.`COLUMNS` 
WHERE 
    `TABLE_SCHEMA` = ? 
AND 
    (`DATA_TYPE` = "datetime" OR `DATA_TYPE` = "date")
AND 
    `TABLE_NAME` = ?)';
PREPARE smtm FROM @query1;
EXECUTE smtm USING @schemaname, @tablename;


SET @query2 = CONCAT('SELECT ', @columns, ' FROM ', @tablename);
PREPARE smtm FROM @query2;
EXECUTE smtm;

答案 1 :(得分:0)

简短的回答是否定的。至少不是一种简单的方法,因为你无法在MySQL中的查询中动态指定数据库模式元素。所以你不能这样做:

SELECT (SHOW FIELDS ... ) FROM table

您可能会创建一个存储过程来动态构建SQL预准备语句(或者在使用编程语言的应用程序/脚本中执行类似操作)。

相关问题