2015-03-31 139 views
0

在我的表“news”里面有“date_in”字段存储日期,当这个格式为“20150108”时创建了一些新闻;如何仅从今年的mysql数据库获取数据

我需要获得今年的新闻。

select title, text from news where date_in = ? 

我该如何使用php/mysql来做到这一点?

感谢

+0

首先,将列数据类型设置为“DATE”,然后使用“YEAR()”mysql函数 – Ghost 2015-03-31 11:35:01

+0

date_in字段的数据类型是什么。 – 2015-03-31 11:35:15

+0

看看[本教程](http://www.w3schools.com/php/php_mysql_connect.asp)。你的问题是相当广泛的,取决于许多数据库设置,只有你会有。 – 2015-03-31 11:36:02

回答

1

您可以从给定的格式选择为低于上年。

mysql> select year('20150108'); 
+------------------+ 
| year('20150108') | 
+------------------+ 
|    2015 | 
+------------------+ 
1 row in set (0.00 sec) 

所以在查询您使用子今年筛选出可以

select 
title, 
text 
from news 
where year(date_in) = year(curdate()); 
+0

谢谢,它像一个魅力。 – Anita 2015-03-31 12:14:00

+0

一个问题:如果我只想选择过去12个月而不是今年的新闻,该怎么办?因为在01.01.2016我什么也没有。 – Anita 2015-03-31 13:29:44

+0

您可以将where条件设置为date_sub(curdate(),interval 12 month)和curdate()之间的where date(date_in) – 2015-03-31 13:39:40

1

它会帮助你Documentation Here

SELECT title, text FROM news WHERE YEAR(date_in) = YEAR(CURDATE()); 
1

它会帮助你

select title, text from news where YEAR(date_in) = YEAR(CURDATE()) 
0

尝试,如果该date_in列类型为nvarchar,VARCHAR等:

SELECT title, text 
FROM news 
WHERE date_in = SUBSTRING(date_in, 1, 4) 
1

易于方法是用year()

select title, text 
from news 
where year(date_in) = year(now()); 

更好的方法是避免在当前日期使用函数。假设你已经没有前途日期:

select title, text 
from news 
where date_in >= makedate(year(now(), 1); 

这个版本更好,因为查询可以在date_in采取指数的优势。

0

首先,$ CurrentYear = date('Y'); //当年即2015年 然后,选择标题,正文从新闻WHERE date_in LIKE '%$ CurrentYear%'

0

选择标题,从新闻文本,其中date_in> 20150101

或$查询=“选择标题,来自新闻的文本where date_in>'。日期(“Y”)。 '0101';