DATE_SUB函数

CURDATE函数

  • 用法
    • 返回当前日期
  • 示例1,查询中使用
SELECT NOW(),CURDATE(),CURTIME()
  • 示例2,建表时设置默认值
CREATE TABLE Orders 
(
	OrderId int NOT NULL,
	ProductName varchar(50) NOT NULL,
	OrderDate datetime NOT NULL DEFAULT CURDATE(),
	PRIMARY KEY (OrderId)
)

<![CDATA[<= ]]>

  • 是什么:
    • <![CDATA[ ]]> 是什么?这是XML语法。在CDATA内部的所有内容都会被解析器忽略。
  • 场景
    • 在使用mybatis 时我们sql是写在xml 映射文件中,如果写的sql中有一些特殊的字符的话,在解析xml文件的时候会被转义,但我们不希望他被转义,所以我们要使用<![CDATA[ ]]>来解决。
  • 注意
    • 但是有个问题那就是 等这些标签都不会被解析,所以我们只把有特殊字符的语句放在 <![CDATA[ ]]> 尽量缩小 <![CDATA[ ]]> 的范围。
  • SQL示例
<select id="allUserInfo" parameterType="java.util.HashMap" resultMap="userInfo1">
<![CDATA[
SELECT newsEdit,newsId, newstitle FROM shoppingGuide WHERE 1=1 AND newsday > #{startTime} AND newsday <= #{endTime}
]]>
<if test="etidName!=''">
AND newsEdit=#{etidName}
</if>
</select>

解释:因为这里有 “>” “<=” 特殊字符所以要使用 <![CDATA[ ]]> 来注释,但是有 标签,所以把等 放外面

  • 如果SQL中的特殊字符比较少可以直接包裹特殊字符,例如包裹“<=”:
<![CDATA[ <= ]]>

date(cv.gmt_modify)

  • 用法:提取日期或日期/时间表达式的日期部分,舍弃时间字段,方便比较,否则就需要将待比较的参数设置为带有日期时间的格式,使用SQL函数更加方便。
  • 参考:
    SQL中的日期函数

示例

SELECT DISTINCT(cv.user_id) FROM `user` u
		INNER JOIN
		share_user_info sui
		ON u.share_id=sui.user_id
		INNER JOIN cv
		ON cv.user_id=u.id
		WHERE sui.account_manager_id=#{userId}

		<if test='startDate != "0" and endDate != "0" '>
			AND cv.gmt_modify BETWEEN #{startDate} AND #{endDate}
		</if>

		<if test='startDate == "0" and endDate == "0" '>
			AND DATE_SUB(CURDATE(), INTERVAL 30 DAY) <![CDATA[<= ]]>  date(cv.gmt_modify)
		</if>
Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐