4

当我尝试从两个日期之间的表中选择记录时,我遇到了问题。

m 使用以下查询

select * from xxx where dates between '10/10/2012' and '10/12/2012'

这个查询对我有用,但是当日期的格式像 1/1/2013.. 它不起作用..

请尽快解决我的问题。

4

10 回答 10

7

此解决方案为您的谓词条件提供 CONVERT_IMPLICIT 操作

SELECT * 
FROM xxx 
WHERE CAST(dates AS date) BETWEEN '1/1/2013' and '1/2/2013'

在此处输入图像描述

或者

SELECT * 
FROM xxx 
WHERE CONVERT(date, dates, 101) BETWEEN '1/1/2013' and '1/2/2013'

在此处输入图像描述

SQLFiddle上的演示

于 2013-02-04T08:11:36.970 回答
2

试试这个

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')  ;
于 2013-02-04T07:36:56.630 回答
1
$Date3 = date('y-m-d');
$Date2 = date('y-m-d', strtotime("-7 days"));
SELECT * FROM disaster WHERE date BETWEEN '".$Date2."' AND  '".$Date3."'
于 2016-01-05T19:39:32.587 回答
0

默认情况下,Mysql 以“YYYY/MM/DD”格式存储和返回“日期”数据类型值。因此,如果我们想以不同的格式显示日期,那么我们必须根据脚本语言的要求来格式化日期值

顺便说一下,什么是列数据类型以及您存储值的格式。

于 2013-02-04T07:31:18.780 回答
0
select * from xxx where dates between '2012-10-10' and '2012-10-12'

我总是YYYY-MM-DD在我的观点中使用,从来没有任何问题。另外,它是可读的和明确的。
您应该知道 usingBETWEEN可能不会返回您对字段的期望,因为它会消除例如DATETIME过时的记录。 我宁愿使用(低于第二天)'2012-10-12 08:00'
where dates >= '2012-10-10' and dates < '2012-10-13'

于 2016-10-14T12:04:55.270 回答
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')

它完美地工作:)

于 2017-06-23T13:23:26.843 回答
0

您必须拆分日期时间,然后以您想要的格式(如 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 格式。

于 2017-12-04T06:08:22.590 回答
-2

用这个

select * from xxx where dates between '10/oct/2012' and '10/dec/2012'

你正在输入字符串,所以根据格式给出月份的名称......

于 2013-02-04T07:20:48.460 回答
-2

试试这个:

select * from xxx where dates between convert(datetime,'10/10/2012',103) and convert(dattime,'10/12/2012',103)
于 2013-02-04T12:51:32.673 回答
-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 + "'";
于 2014-05-03T21:44:53.030 回答