簡體   English   中英

sql的日期范圍

[英]sql from and to date range

試圖獲取這些日期范圍之間的數據,但不斷拋出語法錯誤:

'<='2016-01-06'附近使用的語法))

Select user_email
from wp_users
where ID in (
        select user_id
        from wp_usermeta
        where (
                wp_usermeta.meta_key = 'last_login'
                and CAST(wp_usermeta.meta_value As DATE) >= '2000-01-06'
                and <= '2016-01-06'
                )
        )

您正在考慮使用BETWEEN或者您缺少<=評估的條件。

嘗試:

SELECT user_email
FROM wp_users
WHERE ID IN (
        SELECT user_id
        FROM wp_usermeta
        WHERE (
                wp_usermeta.meta_key = 'last_login'
                AND CAST(wp_usermeta.meta_value AS DATE) >= '2000-01-06'
                AND CAST(wp_usermeta.meta_value AS DATE) <= '2016-01-06'
                )
        )

要么

SELECT user_email
FROM wp_users
WHERE ID IN (
        SELECT user_id
        FROM wp_usermeta
        WHERE (
                wp_usermeta.meta_key = 'last_login'
                AND CAST(wp_usermeta.meta_value AS DATE) BETWEEN '2000-01-06'
                    AND '2016-01-06'
                )
        )

您在<= '2016-01-06'之前缺少CAST(wp_usermeta.meta_value As DATE)

您在第二次日期檢查之前忘記了條件

 Select user_email from wp_users where ID in ( select user_id from wp_usermeta where ( wp_usermeta.meta_key = 'last_login' and CAST(wp_usermeta.meta_value As DATE) >= '2000-01-06' and CAST(wp_usermeta.meta_value As DATE) <= '2016-01-06' ) ) 

您有一個不必要的and <= 您要進行between或兩個比較:

Select user_email
from wp_users u
where ID in (select um.user_id
             from wp_usermeta um
             where um.meta_key = 'last_login' and 
                   CAST(um.meta_value As DATE) >= '2000-01-06' and 
                   CAST(um.meta_value As DATE) <= '2016-01-06'
            );

通常情況下, join s以后進行優於in 如果last_login每個用戶僅出現一次,則可以嘗試:

Select u.user_email
from wp_users u join
     wp_usermeta um
     on u.id = um.user_id
where  um.meta_key = 'last_login' and
      CAST(um.meta_value As DATE) >= '2000-01-06' and 
      CAST(um.meta_value As DATE) <= '2016-01-06';

然后,如果日期存儲為YYYY-MM-DD,則無需進行強制類型轉換(比較字符串即可):

Select u.user_email
from wp_users u join
     wp_usermeta um
     on u.id = um.user_id
where um.meta_key = 'last_login' and
      um.meta_value >= '2000-01-06' and 
      um.meta_value <= '2016-01-06';

最后,此版本可以利用wp_usermeta(meta_key, meta_value, user_id)上的索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM