MySQL子串与WHERE

时间:2014-01-03 07:03:32

标签: mysql sql select substring date-format

我在互联网上搜索但找不到解决问题的方法。我的查询是那样的

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} }}

知道我做错了吗?

谢谢!

5 个答案:

答案 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'