当我尝试从两个日期之间的表中选择记录时,我遇到了问题。
m使用以下查询
select * from xxx where dates between '10/10/2012' and '10/12/2012'
此查询适用于我,但当日期格式为2013年1月1日时..它不起作用..
尽快解决我的问题。
答案 0 :(得分:7)
此解决方案为谓词
中的条件提供CONVERT_IMPLICIT操作SELECT *
FROM xxx
WHERE CAST(dates AS date) BETWEEN '1/1/2013' and '1/2/2013'
OR
SELECT *
FROM xxx
WHERE CONVERT(date, dates, 101) BETWEEN '1/1/2013' and '1/2/2013'
SQLFiddle上的演示
答案 1 :(得分:1)
试试这个
SELECT *
FROM xxx
WHERE dates BETWEEN STR_TO_DATE('10/10/2012', '%m/%d/%Y')
AND STR_TO_DATE('10/12/2012', '%m/%d/%Y') ;
或
SELECT *
FROM xxx
WHERE STR_TO_DATE(dates , '%m/%d/%Y') BETWEEN STR_TO_DATE('10/10/2012', '%m/%d/%Y')
AND STR_TO_DATE('10/12/2012', '%m/%d/%Y') ;
答案 2 :(得分:1)
你必须拆分日期时间,然后用你想要的格式存储它,比如dd / MM / yyyy。然后你可以使用这个查询,但我有反对使用这个因为它会搜索你的数据库上的每一个数据,所以我建议你可以使用datediff。
Dim start = txtstartdate.Text.Trim()
Dim endday = txtenddate.Text.Trim()
Dim arr()
arr = Split(start, "/")
Dim dt As New DateTime
dt = New Date(Val(arr(2).ToString), Val(arr(1).ToString), Val(arr(0).ToString))
Dim arry()
arry = Split(endday, "/")
Dim dt2 As New DateTime
dt2 = New Date(Val(arry(2).ToString), Val(arry(1).ToString), Val(arry(0).ToString))
qry = "SELECT * FROM [calender] WHERE datediff(day,'" & dt & "',[date])>=0 and datediff(day,'" & dt2 & "',[date])<=0 "
这里我使用的是dd / MM / yyyy格式。
答案 3 :(得分:0)
默认情况下,Mysql以“YYYY / MM / DD”格式存储并返回'date'数据类型值。 因此,如果我们想以不同的格式显示日期,那么我们必须根据脚本语言
中的要求格式化日期值顺便说一下,什么是列数据类型以及存储值的格式。
答案 4 :(得分:0)
$Date3 = date('y-m-d');
$Date2 = date('y-m-d', strtotime("-7 days"));
SELECT * FROM disaster WHERE date BETWEEN '".$Date2."' AND '".$Date3."'
答案 5 :(得分:0)
select * from xxx where dates between '2012-10-10' and '2012-10-12'
我总是在观看中使用YYYY-MM-DD
,从未遇到过任何问题。此外,它是可读的,不可疑的
您应该知道,使用BETWEEN
可能无法返回您对DATETIME
字段的期望,因为它会消除例如'2012-10-12 08:00'
的记录。
我宁愿使用where dates >= '2012-10-10' and dates < '2012-10-13'
(低于第二天)
答案 6 :(得分:0)
SELECT * FROM tablename WHERE STR_TO_DATE(columnname, '%d/%m/%Y')
BETWEEN STR_TO_DATE('29/05/2017', '%d/%m/%Y')
AND STR_TO_DATE('30/05/2017', '%d/%m/%Y')
完美无瑕:)
答案 7 :(得分:-2)
使用此
select * from xxx where dates between '10/oct/2012' and '10/dec/2012'
您正在输入字符串,因此请根据格式提供月份名称...
答案 8 :(得分:-2)
试试这个:
select * from xxx where dates between convert(datetime,'10/10/2012',103) and convert(dattime,'10/12/2012',103)
答案 9 :(得分:-2)
DateTime dt1 = this.dateTimePicker1.Value.Date;
DateTime dt2 = this.dateTimePicker2.Value.Date.AddMinutes(1440);
String query = "SELECT * FROM student WHERE sdate BETWEEN '" + dt1 + "' AND '" + dt2 + "'";