最好避免在where子句中的列上运行函数,因为这会削弱数据库使用索引的能力。假设您的表中有200万行,其中100条是从2020年2月开始的,并且date列已建立索引。数据库可以优化查询,例如WHERE date BETWEEN '2020-02-01' AND '2020-02-29'使用索引并只检索它知道的那100行,但是它不能做到WHERE YEAR(date) = 2020 AND MONTH(date) = 2这一点:在后一种情况下,它只需要访问全部200万行,每行需要调用两个函数行(slooow),查找相同的100行

如果要获取当月的数据,则应改用以下方法:

SELECT *

FROM table

WHERE datecolumn >= @startDate AND dateColumn < @endDate

然后让Java为@startDate和@endDate参数计算出固定的常数(为什么?因为它使代码更灵活;如果将当前月份编码为SQL,则以后无法再使用相同的代码来查询当前年份)。 )

至少,如果要将这种逻辑编码到SQL中,请仅将函数用于比较日期的常量:

SELECT *

FROM table

WHERE

--add (1 minus the current day number) to get to start of month

datecolumn >= DATEADD(day, 1-DAY(getutcdate()), CAST(getutcdate() as date)) AND

--add 1 day to result of EOMONTH function to get constant for end of the month

datecolumn < DATEADD(DAY, 1, EOMONTH(getutcdate()))

注意:您没有指定要使用的数据库,所以我猜到了SQLServer并使用@形式的参数名。它不会更改此处的核心信息,即“在where子句中不要对表数据使用函数”

回答来源:Stack Overflow

mysql sql dateadd_sql数据库dateadd相关推荐

  1. mysql sql dateadd_SQL Server Dateadd()函数

    在本教程中,将学习如何使用SQL Server DATEADD()函数将指定值添加到日期的指定日期部分. SQL Server DATEADD()函数简介 DATEADD()函数将数字值添加到输入日期 ...

  2. 万网mysql管理_万网虚拟主机mysql/sql server数据库怎样通过DMS在线管理?

    登录数据库 一.概述 DMS(原iDB Cloud)是一款访问管理云端数据的WEB服务,支持MySQL.SQL Server.PostgreSQL和ADS等数据源,覆盖RDS.ADS.TAE和万网等阿 ...

  3. mysql sql between,数据库between的用法

    数据库between的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库between的用法的用法,希望对你们有用. 数据库between的用法的用法如下: MySQL BETWEEN 语法 BET ...

  4. mysql sql exists_数据库sql语句的exists总结

    数据库sql语句的exists总结 sql exists in 学习 先来比较下语法: --deals=交易表,areas=地域表,例如香港:我们的目的:查看有交易的地域 select * from ...

  5. MySQL基础day05_MySQL数据库的备份与恢复-1-MySQL 5.6

    一.数据备份与恢复 数据备份的方式 物理备份:拷贝存放库和表文件的目录(使用cp.tar等命令备份) 逻辑备份:备份生成库.表.插入记录时的sql语句(使用mysqldump或第三方软件) 数据备份时 ...

  6. .frm_.myd_myi转换为.sql导入mysql数据库_把.frm,.myd,myi转换为.sql导入数据库

    ---------------------- Windows Phone 7手机开发. .Net培训.期待与您交流! ----------------------     前几天在黑马论坛上遇到一个网 ...

  7. linux python连接oracle数据库_Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法...

    本文档主要描述了Linux下python数据库驱动的安装和配置,用来实现在Linux平台下通过python访问MySQL.Oracle.SQL Server数据库. 其中包括以下几个软件的安装及配置: ...

  8. 从sqlserver中数据写入mysql_从SQL server数据库导入Mysql数据库的体验

    起原:网海拾贝  ,因任务需要,要将寄存在sqlserver数据库中的数据全部导入到mysql数据库中,在网上集合关连资料,找到两种体例,而今分袂谈谈对他 起原:网海拾贝 因任务需要,要将寄存在sql ...

  9. oracle rds 运维服务_从运维的角度分析使用阿里云数据库RDS的必要性–你不应该在阿里云上使用自建的MySQL/SQL Server/Oracle/PostgreSQL数据库...

    开宗明义,你不应该在阿里云上使用自建的MySQL or SQL Server数据库,对了,还有Oracle or PostgreSQL数据库. 云数据库 RDS(Relational Database ...

最新文章

  1. python字符串连接方式_Python 字符串连接方式有这么种,你知道吗?
  2. 由 HashMap 引发的一个面试10连炮争吵!
  3. BZOJ3451 Normal 期望、点分治、NTT
  4. Java中 synchronized 关键字的理解
  5. android videoview属性,Android VideoView
  6. Lucene.Net 2.3.1开发介绍 —— 二、分词(五)
  7. iApp对接hybbs社区APP源码
  8. 鼠标浮动到表格的某行 背景颜色变化[mouseover mouseout 以及mouseenter mouseleave]
  9. echarts词云图实现_系统讲解如何用Python制作自己专属的词云图(示例)
  10. linux 安装phpMyAdmin
  11. [数据仓库]基础理论笔记
  12. 720-C语言实现2048游戏
  13. 第四百九十五日:念念不忘,必有回响
  14. OA系统的主要功能和作用是什么
  15. vue中watch的详解
  16. 青龙-聚看点(稳定的毛)
  17. Oracle not in 范围超过 1000 报错问题及解决方案
  18. Libra R-CNN理解
  19. Java反射——反射机制问题——第一章
  20. 暴涨375%超越ZOOM,Fastly靠“网络快递”成为华尔街新宠?

热门文章

  1. 解析各类生鲜电商模式,哪家买菜最强?
  2. 批量修改文件后缀名(脚本)
  3. dockers-系统学习
  4. nginx打包文件以及解压
  5. Java,完全一头雾水,求大shen们指点
  6. mysql索引linke和等于_MySQL索引的学习
  7. 数据库primary key和unique的区别与联系
  8. 计算机专业术语简单释义
  9. 计算机专业文科生录取分数线,文科生适合报考的5所学校,录取分数线不高,但就业前景很好...
  10. EFcore Find和single的区别