给定日期”;2010年3月13日;,在MYSQL Where子句中使用它?
我想在以下日期通过Coldfusion传递一个MYSQL查询:2010年3月13日 因此,查询对其进行过滤,如下所示:给定日期”;2010年3月13日;,在MYSQL Where子句中使用它?,mysql,datetime,date,coldfusion,Mysql,Datetime,Date,Coldfusion,我想在以下日期通过Coldfusion传递一个MYSQL查询:2010年3月13日 因此,查询对其进行过滤,如下所示: SELECT * FROM myTable WHERE dateAdded before or on 03/13/2010 我还希望能够将两个日期作为范围,从:2000年11月1日到:2010年13月3日 SELECT * FROMT myTable WHERE dateAdded is ON or Between 01/11/2000 through 03/13/2010
SELECT *
FROM myTable
WHERE dateAdded before or on 03/13/2010
我还希望能够将两个日期作为范围,从:2000年11月1日到:2010年13月3日
SELECT *
FROMT myTable
WHERE dateAdded is ON or Between 01/11/2000 through 03/13/2010
还有,有没有一种方法可以让一个查询同时处理Date\u Start和Date\u END,或者只处理其中一个 谢谢 看看 这是相反的结果 DATE_FORMAT()函数。这需要一段时间 字符串str和格式字符串格式。 STR_TO_DATE()返回日期时间值 如果格式字符串同时包含 日期和时间部分,或日期或时间 如果字符串仅包含日期,则为 或者是时间的部分。如果日期、时间或 从str提取的日期时间值为 非法,STR_TO_DATE()返回NULL 并发出警告。服务器 扫描试图匹配格式的str 去吧。格式字符串可以包含 文字字符和格式 以%开头的说明符。字面意义的 格式中的字符必须匹配 字面上的str.格式说明符 格式必须与日期或时间部分匹配 对于可以 在格式中使用,请参见日期\格式() 功能描述
选择*
从myTable
其中(dateAdded=YourdateValueEnd,YourdateValueStart为空)
或(在DateValueStart和DateValueEnd之间添加的日期)
如果您无法在Coldfusion中将日期格式化为YYYY-MM-DD
,您可以使用MySQL中的STR_to_date
函数,如下所示:
SELECT
*
FROM
myTable
WHERE
dateAdded <= STR_TO_DATE('03/13/2010','%m/%d/%Y');
我相信MySQL可以在日期上使用比较运算符 所以我想你可以
SELECT *
FROM myTable
WHERE dateAdded <= 20100111
and
SELECT *
FROMT myTable
WHERE dateAdded is BETWEEN 20000111 AND 20100303
选择*
从myTable
其中dateAdded在Coldfusion中执行此操作的最佳方法是使用cfqueryparam来管理字符串到日期对象的转换,并提供一定程度的SQL注入预防
<cfset myResult = queryNew("id")>
<cfset startDate = "01/11/2000">
<cfset endDate = dateFormat(now(), "mm/dd/yyyy")>
<cfquery name="myResult" datasource="myDatasource">
SELECT *
FROM myTable
WHERE dateAdded BETWEEN <cfqueryparam CFSQLType="CF_SQL_DATE" value="#startDate#">
AND <cfqueryparam CFSQLType="CF_SQL_DATE" value="#endDate#">
</cfquery>
<cfoutput query="myResult">
...output code here
</cfoutput>
挑选*
从myTable
其中日期添加在
及
…在此输出代码
您可以将cfqueryparam与cfsqltype的CF\u SQL\u时间戳一起使用。
给定“startDate”和“endDate”变量,下面的代码应该可以工作。如果startDate或endDate设置为false,则不包括:
<cfset startDate = createDate(2010, 01, 19) />
<cfset endDate = createDate(2010, 01, 26) />
<cfquery name="q" datasource="#request.dsn#">
SELECT *
FROM myTable
WHERE
(
<cfif isDate(startDate)>
dateAdded >= <cfqueryparam value="#dateFormat(startDate, "YYYY/MM/DD")#" cfsqltype="CF_SQL_TIMESTAMP" />
</cfif>
<cfif isDate(endDate)>
<cfif isDate(startDate)>AND</cfif>
dateAdded <= <cfqueryparam value="#dateFormat(endDate, "YYYY/MM/DD")#" cfsqltype="CF_SQL_TIMESTAMP" />
</cfif>
)
</cfquery>
挑选*
从myTable
哪里
(
已添加日期>=
及
dateAdded如何格式化字符串“03/12/2010”要接受以上内容:YourDateValues有没有办法让一个查询既可以处理Date\u Start,也可以处理Date\u END,或者只处理其中一个?@nobosh:可以给我们看一下您的coldfusion代码吗?我们可能会建议一个更好的解决方案。@nobosh:对不起,我刚刚注意到您的日期是MM/DD格式,而不是DD/MM格式。修正了我的答案。dateAdded是数据库中的一个时间戳,所以我添加了一个DATE_格式(dateAdded),这似乎很有帮助……现在的错误是:您的SQL语法有一个错误;请查看与您的MySQL服务器版本对应的手册,了解在STR_to_DATE('03/01/2010','%d/%m/%Y')和STR to_DATE之间使用的正确语法('03/24/2010',''第22行是否有理由认为m&d是小写而Y是大写?
SELECT
*
FROM
myTable
WHERE
dateAdded BETWEEN STR_TO_DATE('01/11/2000','%m/%d/%Y') AND
STR_TO_DATE('03/13/2010','%m/%d/%Y');
SELECT *
FROM myTable
WHERE dateAdded <= 20100111
and
SELECT *
FROMT myTable
WHERE dateAdded is BETWEEN 20000111 AND 20100303
<cfset myResult = queryNew("id")>
<cfset startDate = "01/11/2000">
<cfset endDate = dateFormat(now(), "mm/dd/yyyy")>
<cfquery name="myResult" datasource="myDatasource">
SELECT *
FROM myTable
WHERE dateAdded BETWEEN <cfqueryparam CFSQLType="CF_SQL_DATE" value="#startDate#">
AND <cfqueryparam CFSQLType="CF_SQL_DATE" value="#endDate#">
</cfquery>
<cfoutput query="myResult">
...output code here
</cfoutput>
<cfset startDate = createDate(2010, 01, 19) />
<cfset endDate = createDate(2010, 01, 26) />
<cfquery name="q" datasource="#request.dsn#">
SELECT *
FROM myTable
WHERE
(
<cfif isDate(startDate)>
dateAdded >= <cfqueryparam value="#dateFormat(startDate, "YYYY/MM/DD")#" cfsqltype="CF_SQL_TIMESTAMP" />
</cfif>
<cfif isDate(endDate)>
<cfif isDate(startDate)>AND</cfif>
dateAdded <= <cfqueryparam value="#dateFormat(endDate, "YYYY/MM/DD")#" cfsqltype="CF_SQL_TIMESTAMP" />
</cfif>
)
</cfquery>
<cfset startDate = false />
<cfquery name="q" datasource="#request.dsn#">....