MySQL日期之间

The*_*ver 8 mysql sql database

固定 - 这就是我现在所拥有的 - 用ASP编写

If Session("dateRange") = "Today" Then
        fromDate = Date()
        fromDate = Year(fromDate)&"-"&Month(fromDate)&"-"&Day(fromDate)
        whereClause = whereClause & "AND dateCreated = '"&fromDate&"' "
ElseIf Session("dateRange") = "Yesterday" Then
        fromDate = DateAdd("d",-1,Date())
        fromDate = Year(fromDate)&"-"&Month(fromDate)&"-"&Day(fromDate)
        whereClause = whereClause & "AND dateCreated = '"&fromDate&"' "
ElseIf Session("dateRange") = "1 Week" Then
        fromDate = DateAdd("d",-7,Date())
        fromDate = Year(fromDate)&"-"&Month(fromDate)&"-"&Day(fromDate)
        whereClause = whereClause & "AND dateCreated BETWEEN '"&fromDate&"' AND '"&toDate&"' "
ElseIf Session("dateRange") = "1 Month" Then
        fromDate = DateAdd("m",-1,Date())
        fromDate = Year(fromDate)&"-"&Month(fromDate)&"-"&Day(fromDate)
        whereClause = whereClause & "AND dateCreated BETWEEN '"&fromDate&"' AND '"&toDate&"' "
ElseIf Session("dateRange") = "3 Months" Then
        fromDate = DateAdd("m",-3,Date())
        fromDate = Year(fromDate)&"-"&Month(fromDate)&"-"&Day(fromDate)
        whereClause = whereClause & "AND dateCreated BETWEEN '"&fromDate&"' AND '"&toDate&"' "
ElseIf Session("dateRange") = "6 Months" Then
        fromDate = DateAdd("m",-6,Date())
        fromDate = Year(fromDate)&"-"&Month(fromDate)&"-"&Day(fromDate)
        whereClause = whereClause & "AND dateCreated BETWEEN '"&fromDate&"' AND '"&toDate&"' "
ElseIf Session("dateRange") = "1 Year" Then
        fromDate = DateAdd("yyyy",-1,Date())
        fromDate = Year(fromDate)&"-"&Month(fromDate)&"-"&Day(fromDate)
        whereClause = whereClause & "AND dateCreated BETWEEN '"&fromDate&"' AND '"&toDate&"' " 
End If
Run Code Online (Sandbox Code Playgroud)

原始问题:

简单的问题,但由于某种原因,我似乎无法让这个工作.

我有一个搜索框,旁边是日期范围选择菜单,因此用户可以在过去1个月,6个月或12个月内搜索照片.

我所拥有的不是错误,但它应该没有产生结果,这是它:

WHERE dateCreated BETWEEN "&DateAdd("m",-6,Date())&" AND "&Date()&"
Run Code Online (Sandbox Code Playgroud)

SQL输出产生这个:

dateCreated BETWEEN 18/03/2011 AND 18/09/2011 ORDER BY dateCreated DESC
Run Code Online (Sandbox Code Playgroud)

数据库'dateCreated'字段设置为(Date INDEX).

任何人都可以看到有什么问题吗?

Asa*_*aph 31

生成的SQL中的日期应使用单引号引用.尝试使用引号围绕查询的动态部分.像这样的东西:

WHERE dateCreated BETWEEN '"&DateAdd("m",-6,Date())&"' AND '"&Date()&"'
Run Code Online (Sandbox Code Playgroud)

我假设会生成这个SQL:

dateCreated BETWEEN '18/03/2011' AND '18/09/2011' ORDER BY dateCreated DESC
Run Code Online (Sandbox Code Playgroud)

另外,看看你是否能找到一种格式化日常MySQL yyyy-mm-dd格式的方法.像这样:

dateCreated BETWEEN '2011-03-18' AND '2011-09-18' ORDER BY dateCreated DESC
Run Code Online (Sandbox Code Playgroud)


DRa*_*app 7

如果你特意从"现在"向后看,为什么不这样做

where DateCreated >= DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
where DateCreated >= DATE_SUB( CURDATE(), INTERVAL 6 MONTH )
where DateCreated >= DATE_SUB( CURDATE(), INTERVAL 12 MONTH )
Run Code Online (Sandbox Code Playgroud)

不需要"范围",只需插入您想要允许的月份范围...