我需要运行一个查询,查找昨天凌晨2点到凌晨2点之间发生的所有登录日期(dd/mm/yyyy
)和时间(hh.mm
)。数据库中的登录时间格式为mm-dd-yyyy hh.mm.ss
。
我尝试过多次select
和between
次查询,这些查询会在错误的日期或超出时间范围内返回数据。
答案 0 :(得分:6)
根据您提供的信息,我只能提供一个通用示例:
SELECT *
FROM [YourTable]
WHERE [YourDate] BETWEEN '08-15-2011 02:00:00' AND '08-16-2011 02:00:00'
的 强> 的 **编辑** 强>
根据评论的一个好建议,这是一个可重复使用的版本:
SELECT *
FROM [YourTable]
WHERE [YourDate] BETWEEN DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0) + '02:00'
AND DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()-1), 0) + '02:00'
答案 1 :(得分:1)
假设mysql:
SELECT * FROM your_table
WHERE STR_TO_DATE(your_date, '%m-%d-%Y %H.%i.%s') BETWEEN
DATE_SUB(STR_TO_DATE(DATE_FORMAT(NOW(), '%m-%d-%Y'), '%m-%d-%Y'), INTERVAL 22 HOUR) AND
DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%m-%d-%Y'), '%m-%d-%Y'), INTERVAL 2 HOUR)
我确信有更好的方法。
答案 2 :(得分:1)
如果我们按如下方式使用,查询不会返回任何记录......
SELECT *
FROM [YourTable]
WHERE [YourDate] BETWEEN DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0) + '02:00'
AND DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()-1), 0) + '02:00'
我们正在使用between子句,因此最早的日期应该是第一个,查询变为如下......
SELECT *
FROM [YourTable]
WHERE [YourDate] BETWEEN DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()-1), 0) + '02:00'
AND DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0) + '02:00'
答案 3 :(得分:0)
这也可以帮助你
.my-form {
// Some styles
&__input {
//Some styles
&[type="text"] { // generates .my-form__input[type="text"]
border: 2px solid red;
}
}
&__button {
//Some styles
}
}
答案 4 :(得分:0)
我认为您可以使用以下提示:
SET @start = CURDATE() - interval 1 DAY + interval 2 HOUR;
SET @end = CURDATE() + interval 2 HOUR;
然后:
SELECT * FROM TABLE_NAME WHERE DATE_FIELD BETWEEN @start AND @end