`
musicmmm
  • 浏览: 81387 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql 对取当前日期周一和周日语句的详细解析

阅读更多
网上对于用mysql取当前日期周一和周日的方法非常多,但基本上都只有一个方法,没有什么解释,后果就是会用,但为什么要这样用,就不一定知道了。
自己研究了下,写点东西,避免遗忘



select subdate(curdate(),date_format(curdate(),'%w')-1)//获取当前日期在本周的周一
select subdate(curdate(),date_format(curdate(),'%w')-7)//获取当前日期在本周的周日
这两句语句是mysql用来取当前日期的周一或周日的一个方法,那么这句如何运作的呢?

%w 是以数字的形式来表示周中的天数( 0 = Sunday, 1=Monday, . . ., 6=Saturday),0为周日,6为周六,跟我们一般的认知,一周是从周一开始的并不一样。

date_format是一个日期转换函数

date_format(curdate(),'%w')表示当前日期到上周周日共有几天的间隔,即当前日期减去上周周日的日期=天数(例:curdate()为2011-01-11,那么上周周日为2011-01-09,两者相减为2)所以若单独输出这一句:select date_format(curdate(),'%w') 结果就是2

在mysql api里对于subdate函数是这样解释的:
SELECT SUBDATE(NOW( ), 1) AS 'Yesterday',
SUBDATE(NOW( ), INTERVAL -1 DAY) AS 'Tomorrow';
正值为昨天,负值为明天,当前时间的起点,就是当前时间的上周周日

subdate函数就是用当前时间减去2天,得到上周周日的时间为2011-01-09
那么如果运行select subdate(curdate(),date_format(curdate(),'%w')-2)这句,就表示用当前时间-(2-2),即-0,得到的结果就是当前日期本身了。

如果把%w换成%d呢
%d 是用两位数字来表示月中的天数( 00, 01, . . ., 31)
直接输出的结果就应该是11,表示当前日期在一个月内是第几天
select date_format('2011-01-11','%d')
放到开始的语句里就表示用当前时间减去11,结果为2010-12-31
select subdate('2011-01-11',date_format('2011-01-11','%d'))

更多关于data_format的用法可以参考
http://www.phpzixue.cn/detail449.shtml
分享到:
评论

相关推荐

    mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql in

    mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql ...

    mysql中取系统当前时间,当前日期方便查询判定的代码

    获取当前时间的MySql时间函数处理MySql时间日期的函数有很多,下面为您介绍的就是用于获取当前时间的MySql时间函数,如果您对此感兴趣的话,不妨一看下面为您介绍的MySql时间函数用于获取当前时间,该MySql时间函数...

    Oracle Sql语句转换成Mysql Sql语句

    在数据库管理领域,Oracle SQL和MySQL SQL是两种广泛使用的SQL方言,它们在语法和功能上存在一定的差异。当需要将一个基于Oracle SQL的应用程序迁移到MySQL环境时,就需要进行SQL语句的转换工作。本项目提供了一个...

    mysql和oracle和sql语句

    总的来说,理解并熟练掌握MySQL、Oracle和SQL Server的SQL语句对于数据库管理员和开发者来说至关重要,这能帮助他们有效地管理、查询和操作数据。在实际工作中,需要根据具体的应用场景和需求选择合适的数据库系统,...

    mysql批量修改语句

    mysql批量语句,传入list 批量修改mysql批量语句,传入list 批量修改mysql批量语句,传入list 批量修改

    mysql语句转postgres的工具

    1. **DDL转换**:该工具能够解析MySQL的CREATE TABLE、ALTER TABLE等DDL语句,并将其转换为PostgreSQL可以理解的语法。这涉及到字段类型、约束、索引等的映射,例如,MySQL的`ENUM`类型在PostgreSQL中可能需要转换为...

    mysql常用性能查询语句

    本文总结了一些常用的 MySQL 性能查询语句,帮助数据库管理员和开发人员更好地了解和优化数据库性能。 1. 查看 MySQL 本次启动后的运行时间(单位:秒) 使用语句:show status like 'uptime'; 该语句可以查看 ...

    mysql 日期和时间格式转换实现语句

    这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最后30天以内: mysql> SELECT something FROM table WHERE TO_DAYS(NOW()) – TO_DAYS(date_col) <= 30; DAYOFWEEK(date) 返回日期...

    MySql用DATE_FORMAT截取DateTime字段的日期值

    您可能感兴趣的文章:MySQL中日期比较时遇到的编码问题解决办法PHP以及MYSQL日期比较方法mysql 获取当前日期函数及时间格式化参数详解mysql unix准换时间格式查找指定日期数据代码MySql日期查询语句详解深入mysql ...

    Excel生成MYSQL建表语句

    标题中的“Excel生成MYSQL建表语句”是指利用JAVA编程技术,通过读取预先设计好的Excel模板,自动生成对应的MySQL数据库建表语句的过程。这个过程通常涉及到数据处理、文件读写以及数据库操作等核心技能。 首先,让...

    oracle到mysql建表语句迁移

    oracle向mysql建表语句的迁移。 直接表结构的生成sql脚本

    2022年所有日期数据(区分周末、节假日、工作日) mysql 语句

    2022所有日期数据(区分周末、节假日、工作日) mysql 语句 insert 生成的节假日表 工作日:0 法定节假日:1 休息日加班:2 休息日:3 mysql2022日期数据全部.sql

    mysql批量导出建表语句.zip

    MySQL批量导出建表语句是一项常见的数据库管理任务,它涉及到数据库备份、迁移或复制到新的环境。在本例中,"mysql批量导出建表语句.zip" 是一个压缩包,包含了一种使用Kettle(也称为Pentaho Data Integration,...

    Mysql常用操作语句.

    例如,查看Mysql版本号和服务器当前日期: ``` mysql> select version(),current_date; ``` ### 2.2 创建数据库 创建数据库是创建一个新的数据库的过程。基本语法格式为:CREATE DATABASE 数据库名。 例如,创建一...

    mysql 语句大全

    在本篇文章中,我们将详细介绍 MySQL 语句大全的基本语法和高级查询运算词。 一、基本语法 1. 创建数据库:CREATE DATABASE database-name create database 语句用于创建一个新的数据库。 2. 删除数据库:DROP ...

    Mysql的表对象Sql语句转换单表,转换成Oracle创建表sql

    MySQL和Oracle都是广泛使用的数据库管理系统,但它们的SQL语法略有不同。当需要将MySQL的表结构迁移到Oracle数据库时,必须进行适当的语法转换。标题提到的"‘Mysql的表对象Sql语句转换单表,转换成Oracle创建表sql...

    2023年所有日期数据(区分周末、节假日、工作日) mysql 语句

    2023年所有日期数据(区分周末、节假日、工作日) mysql 语句 insert 生成的节假日表 code字段状态: 工作日:0 法定节假日:1 休息日加班(法定节假日调休):2 休息日(日常休息日):3 mysql2023日期数据全部.sql

Global site tag (gtag.js) - Google Analytics