MySQL 日期之间

标签 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

原始问题:

简单的问题,但出于某种原因,我似乎无法让它工作。

我有一个搜索框,旁边是一个日期范围选择菜单,因此用户可以搜索最近 1 个月、6 个月或 12 个月内的照片。

我没有错误,但在应该做的时候却没有产生结果,就是这样:

WHERE dateCreated BETWEEN "&DateAdd("m",-6,Date())&" AND "&Date()&"

SQL 输出结果如下:

dateCreated BETWEEN 18/03/2011 AND 18/09/2011 ORDER BY dateCreated DESC

数据库“创建日期”字段设置为(日期索引)。

谁能看出哪里出了问题?

最佳答案

生成的 SQL 中的日期应该用单引号引起来。尝试用引号将查询的动态部分括起来。像这样:

WHERE dateCreated BETWEEN '"&DateAdd("m",-6,Date())&"' AND '"&Date()&"'

我假设它会产生这个 SQL:

dateCreated BETWEEN '18/03/2011' AND '18/09/2011' ORDER BY dateCreated DESC

此外,看看您是否可以找到一种方法来将日期格式化为更常用的 MySQL yyyy-mm-dd 格式。像这样:

dateCreated BETWEEN '2011-03-18' AND '2011-09-18' ORDER BY dateCreated DESC

关于MySQL 日期之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7464271/

相关文章:

html - 将 MS Access 表单嵌入在线网站

MySQL : changing root password

PHP MySQL INSERT INTO解析错误

sql - 检查Where中的count函数

带有内部连接和子查询的mysql限制

mysql - 为基于事件的分析设计数据库模式

php - 如何使用 Laravel 框架更新 MySQL 中的 json 数据?

mysql - 在 mysql 中每天删除除 max(timestamp) 之外的所有行

mysql - 从 Docker 容器中访问主机上的 MySQL 数据库

PHP如何将查询字符串分隔成变量