[英]MySQL Substring with WHERE
我已經在互聯網上進行搜索,但是找不到解決我的問題的方法。 我的查詢是這樣的
SELECT users.id, SUBSTRING(posts.datestr, 4, 8)
FROM users, posts
WHERE posts.datestr='Jan-2014'
(以上查詢縮短了)
posts.datestr中的值實際上是20-Jan-2014
,但是我希望它是Jan-2014
,但是即使添加了SUBSTRING
代碼,它仍然以某種方式顯示為20-Jan-2014
。
知道我做錯了什么嗎?
謝謝!
您需要為SUBSTRING
的結果加上別名,並在您的條件中使用該別名(在以下示例中為shortdate
)
由於您現在將在條件中使用別名,因此無法使用where
子句,但是可以使用having
子句
就像是:
SELECT users.id, SUBSTRING(posts.datestr, 4, 8) as shortdate
FROM users, posts
HAVING shortdate='Jan-2014'
SELECT users.id, SUBSTRING(posts.datestr, 4, 8) shortpostdate FROM users, posts WHERE shortpostdate='Jan-2014'
使用Inner JOIN
SELECT users.id, SUBSTRING(posts.datestr, 4, 8) FROM users inner join posts on users.userid = posts.[primary key] WHERE posts.datestr='Jan-2014'
使用以下
substr(posts.datestr,3)
代替
SUBSTRING(posts.datestr, 4, 8)
使用DATETIME函數而不是SUBSTRING()
SELECT users.id, DATE_FORMAT(STR_TO_DATE(posts.datestr, '%d-%b-%Y'), '%b-%Y') updatedDate
FROM users, posts
HAVING updatedDate = 'Jan-2014'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.