如何将时间间隔代码添加到SQL

时间:2013-02-02 16:00:55

标签: mysql sql

SELECT COUNT(*) AS cnt FROM ( (SELECT 'used' FROM b_names_1) UNION ALL (SELECT 'used' FROM b_names_2)) AS t WHERE 'used' = 1

这段代码非常好......

但是我想用时间间隔对结果进行排序,所以当我尝试在底部添加这些行时,它不起作用:

AND registration_date_time >= STR_TO_DATE( '2013-01-28 00:00:00', '%Y-%m-%d %H:%i:%s' ) AND registration_date_time < STR_TO_DATE( '2013-02-02 00:00:00', '%Y-%m-%d %H:%i:%s' )

这段代码看起来像这样:

SELECT COUNT(*) AS cnt FROM ( (SELECT 'used' FROM b_names_1) UNION ALL
(SELECT 'used' FROM b_names_2)) AS t
WHERE 'used' = 1 AND registration_date_time >= STR_TO_DATE( '2013-01-28 00:00:00', '%Y-%m-%d %H:%i:%s' ) AND registration_date_time < STR_TO_DATE( '2013-02-02 00:00:00', '%Y-%m-%d %H:%i:%s' )

它给了我以下错误:#1054 - 'where子句'中的未知列'registration_date_time'

任何想法如何正确地将该日期代码实现到SQL?

1 个答案:

答案 0 :(得分:1)

这些列必须在某处 FROM ,将它们添加到内部查询中:

SELECT COUNT(*) AS cnt 
FROM ( 
    (SELECT 'used', registration_date_time FROM b_names_1) 
    UNION ALL
    (SELECT 'used', registration_date_time FROM b_names_2)
) AS t
WHERE 'used' = 1 
AND registration_date_time >= STR_TO_DATE( '2013-01-28 00:00:00', '%Y-%m-%d %H:%i:%s' ) 
AND registration_date_time < STR_TO_DATE( '2013-02-02 00:00:00', '%Y-%m-%d %H:%i:%s' )