简体   繁体   English

我可以在MySQL的“ BETWEEN”语句中使用“ AS”吗?

[英]Can I use 'AS' in 'BETWEEN' statement in MySQL?

Can I use as in BETWEEN statement in mysql or something alike. 我可以用asBETWEEN在MySQL或东西都声明。

SELECT * FROM status WHERE date BETWEEN CONVERT_TZ('2013-11-01 00:00:00','GMT','UTC') AND CONVERT_TZ('2013-11-07 23:59:59','GMT','UTC') AS firstweek AND date BETWEEN CONVERT_TZ('2013-11-08 00:00:00','GMT','UTC') AND CONVERT_TZ('2013-11-15 23:59:59','GMT','UTC') AS secondweek AND date BETWEEN CONVERT_TZ('2013-11-16 00:00:00','GMT','UTC') AND CONVERT_TZ('2013-11-22 23:59:59','GMT','UTC') AS secondweek ORDER BY date DESC

I'm getting a syntax error.How can use an alias using BETWEEN ? 我遇到语法错误。如何使用BETWEEN使用别名? Is there other way for naming each week, this will serve as my identifier. 每周还有其他命名方法吗,它将用作我的标识符。

You're putting an alias to the expression, not selected columns 您要为表达式添加别名,而不是选定的列
You should make ir like this: 您应该这样使ir:

SELECT t.* FROM  
(SELECT s.*, CONVERT(...) as field1, CONVERT(...) as field2 from status) t
...then do what you want with fieldsXX...  

You could try 你可以试试

SELECT * FROM date JOIN
    (SELECT CONVERT_TZ('2013-11-01 00:00:00','GMT','UTC') AS w1start,
            CONVERT_TZ('2013-11-07 23:59:59','GMT','UTC') AS w1end,
            CONVERT_TZ('2013-11-08 00:00:00','GMT','UTC') AS w2start,
            CONVERT_TZ('2013-11-15 23:59:59','GMT','UTC') AS w2end,
            CONVERT_TZ('2013-11-16 00:00:00','GMT','UTC') AS w3start,
            CONVERT_TZ('2013-11-22 23:59:59','GMT','UTC') AS w3end) AS weeks
    WHERE date BETWEEN w1start AND w1end
       OR date BETWEEN w2start AND w2end
       OR date BETWEEN w3start AND w3end
    ORDER BY date DESC

This is at least a start. 这至少是一个开始。

If, however, you want to tell the application which of the 3 conditions is fulfilled, yiu might want to do 但是,如果您想告诉应用程序满足3个条件中的哪一个,则yiu可能想做

SELECT date BETWEEN w1start AND w1end AS firstweek, 
       date BETWEEN w2start AND w2end AS secondweek,
       date BETWEEN w3start AND w3end AS thirdweek,
       whatevercolumsyouneed
       FROM date JOIN
    (SELECT CONVERT_TZ('2013-11-01 00:00:00','GMT','UTC') AS w1start,
            CONVERT_TZ('2013-11-07 23:59:59','GMT','UTC') AS w1end,
            CONVERT_TZ('2013-11-08 00:00:00','GMT','UTC') AS w2start,
            CONVERT_TZ('2013-11-15 23:59:59','GMT','UTC') AS w2end,
            CONVERT_TZ('2013-11-16 00:00:00','GMT','UTC') AS w3start,
            CONVERT_TZ('2013-11-22 23:59:59','GMT','UTC') AS w3end) AS weeks
    HAVING firstweek OR secondweek OR thirdweek
    ORDER BY date DESC

(untested; I am not sure if HAVING is placed correctly.) (未测试;我不确定是否正确放置了HAVING 。)

You're using AS in the WHERE clause. 您在WHERE子句中使用AS It can only be used in the column list and in the FROM clause. 它只能在列列表和FROM子句中使用。

SELECT a.somefield AS s, someexpr AS e
  FROM table1 AS a, ...
  WHERE ...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM