我在MySQL表中有一个datetime列,我想选择具有相同年,月和日(但可能是不同的小时和分钟)的记录。在其他情况下,我会选择具有相同年份和月份的那些。有没有办法做到这一点?
答案 0 :(得分:12)
执行此操作的最快方法是使用BETWEEN
,例如:
SELECT fields FROM table WHERE
datecolumn BETWEEN '2001-01-01 00:00:00' AND '2001-12-31 23:59:59';
答案 1 :(得分:6)
您可以使用部分MySQL Date and Time Functions来提取/比较您感兴趣的日期部分。
SELECT * FROM table WHERE DATE(datetime1) = DATE(datetime2);
SELECT * FROM table WHERE YEAR(datetime1) = YEAR(datetime2) AND MONTH(datetime1) = MONTH(datetime2)
etc
答案 2 :(得分:0)
我之前在SQL服务器中看到过这样的日期转换(不确定这是否适用于MySQL):
select convert(varchar(10), getdate(), 120)
(这只是如何将日期转换为YYYY-MM-DD的一个例子)
答案 3 :(得分:0)
有functions之类的年份()和小时()会为你做这件事。
select * from users where year(lastlogin) = year(now())
答案 4 :(得分:0)
SELECT
foo
FROM
FooTable
WHERE
DATEADD(dd, 0, DATEDIFF(dd, 0, TheDate)) = DATEADD(dd, 0, DATEDIFF(dd, 0, @SomeDate))
这:DATEADD(dd, 0, DATEDIFF(dd, 0, TheDate))
有效地将DATETIME
值的时间部分设置为00:00:00
,而无需进行字符串转换等。
答案 5 :(得分:0)
我知道我要离开时间,但概念是一样的...... 假设日期时间如下:12/25/2009
SELECT * FROM table
WHERE SUBSTRING(datetime, 6, 4) = targetYear
AND SUBSTRING(datetime, 0, 2) = targetMonth
答案 6 :(得分:0)
是的,您想在选择中使用以下date functions之一
答案 7 :(得分:-1)
您也可以
SELECT * FROM table WHERE datetime LIKE '2008-08-01%
“
或
SELECT * FROM table WHERE datetime LIKE '2007-05%'