我在互联网上搜索但找不到解决问题的方法。我的查询是那样的
SELECT users.id, SUBSTRING(posts.datestr, 4, 8)
FROM users, posts
WHERE posts.datestr='Jan-2014'
(上面的查询被缩短了)
posts.datestr中的值实际上是20-Jan-2014
,但我希望它是Jan-2014
,但即使在添加SUBSTRING
代码之后,它仍然以某种方式显示为{{1} }}
知道我做错了吗?
谢谢!
答案 0 :(得分:1)
您需要为SUBSTRING
的结果添加别名,并在条件中使用该别名(以下示例中为shortdate
)
由于您现在将在条件中使用别名,因此无法使用where
子句,但您可以使用having
子句
类似的东西:
SELECT users.id, SUBSTRING(posts.datestr, 4, 8) as shortdate
FROM users, posts
HAVING shortdate='Jan-2014'
答案 1 :(得分:0)
SELECT users.id, SUBSTRING(posts.datestr, 4, 8) shortpostdate FROM users, posts WHERE shortpostdate='Jan-2014'
答案 2 :(得分:0)
使用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'
链接下方可以为您提供帮助http://www.w3schools.com/sql/sql_join_inner.asp
答案 3 :(得分:0)
使用以下
substr(posts.datestr,3)
而不是
SUBSTRING(posts.datestr, 4, 8)
答案 4 :(得分:0)
使用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'