添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

假如有个表product有个字段add_time,它的数据类型为datetime,有人可能会这样写sql:

代码如下 复制代码

select * from product where add_time = '2013-01-12'

对于这种语句,如果你存储的格式是YY-mm-dd是这样的,那么OK,如果你存储的格式是:2013-01-12 23:23:56这种格式你就悲剧了,这是你就可以使用DATE()函数用来返回日期的部分,所以这条sql应该如下处理:

代码如下 复制代码

select * from product where Date(add_time) = '2013-01-12'

如果按照日期+时间模式(2013-01-12 23:23:56—时间精确到秒)查询数据库,则可以使用timestamp()函数来查询:

select * from product where timestamp(add_time) = '2013-01-12 23:23:56';

或者查询一个时间范围,可以用:

select * from product where timestamp(add_time) between '2013-01-12 03:23:56' and '2013-01-12 23:23:56';

再来一个,如果你要查询2013年1月份加入的产品呢?

代码如下 复制代码

select * from product where date(add_time) between '2013-01-01' and '2013-01-31'

你还可以这样写:

select * from product where Year(add_time) = 2013 and Month(add_time) = 1

这些你该知道mysql日期函数在对你处理日期比较问题的作用了吧?

其date_col的值是在最后30天以内:

代码如下 复制代码

mysql> SELECT something FROM table
WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;

DAYOFWEEK(date)
返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。

代码如下 复制代码
mysql> select DAYOFWEEK('1998-02-03');
-> 3

WEEKDAY(date)
返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。

代码如下 复制代码
mysql> select WEEKDAY('1997-10-04 22:23:00');
-> 5
mysql> select WEEKDAY('1997-11-05');
-> 2

DAYOFMONTH(date)
返回date的月份中日期,在1到31范围内。

代码如下 复制代码
mysql> select DAYOFMONTH('1998-02-03');
-> 3

DAYOFYEAR(date)
返回date在一年中的日数, 在1到366范围内。

代码如下 复制代码
mysql> select DAYOFYEAR('1998-02-03');
-> 34

MONTH(date)
返回date的月份,范围1到12。

代码如下 复制代码
mysql> select MONTH('1998-02-03');
-> 2

DAYNAME(date)
返回date的星期名字。

代码如下 复制代码
mysql> select DAYNAME("1998-02-05");
-> 'Thursday'

MONTHNAME(date)
返回date的月份名字。

代码如下 复制代码
mysql> select MONTHNAME("1998-02-05");
-> 'February'

QUARTER(date)
返回date一年中的季度,范围1到4。

代码如下 复制代码
mysql> select QUARTER('98-04-01');
-> 2

原文地址: http://williambryantliu.blog.hexun.com/85734616_d.html#commentsList

假如有个表product有个字段add_time,它的数据类型为datetime,有人可能会这样写sql: 代码如下 复制代码 select * from product where add_time = '2013-01-12' 对于这种语句,如果你存储的格式是YY-mm-dd是这样的,那么OK,如果你存储的格式是:2013-01-12 23:23:56这种格式... 在项目开发中,一些业务表字段经常使用 日期 和时间类型,而且后续还会牵涉到这类字段的 查询 。关于 日期 及时间的 查询 等各类需求也很多,本篇文章简单讲讲 日期 及时间字段的规范化 查询 方法 。 1. 日期 和时间类型概览 MySQL 支持的 日期 和时间类型有 DATETIME TIMESTAMP 、DATE、TIME、YEAR ,几种类型比较如下: 涉及到 日期 和时间字段类型选择时,根据存储需求选择合适的类型即可。 2. 日期 和时间相关函数 处理 日期 和时间字段的函数有很多,有的经常会在 查询 中使用到,下面介绍下几个相关函数的使用 方法 。 CURDATE 和 CURRENT_DATE   两个函数作用相同,返回当前 应该是用str_to_date函数把字符串变为date类型然后比较。比如下面: sql="SELECTname,departFROMstaffwhereexpireTime>str_to_date('2020-01-16','%Y-%m-%d')orexpireTimeisNULL;" datetime 特别注意。虽然写sql使用的是 yyyy-MM-dd 但是 mysql 默认会添加 00:00:00 作比较。 create_time 为 datetime 时: 以下sql只能...
一、源码特点 java Web社区资源管系统是一套完善的java web信息管理系统 ,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为 Mysql 5.0,使用java语言开发。 二、功能介绍 (1)用户管理:对用户信息进行添加、删除、修改和查看 (2)摊位管理:对摊位信息进行添加、删除、修改和查看 (3)闲置物品管理:对闲置物品信息进行添加、删除、修改和查看 (4)通知管理:对通知信息进行添加、删除、修改和查看 (5)费用类型管理:对费用类型信息进行添加、删除、修改和查看 (6)费用管理:对费用信息进行添加、删除、修改和查看 (7)留言管理:对留言信息进行添加、删除、修改和查看 三、注意事项 1、管理员账号:admin密码:admin 数据库配置文件 DB O.java 2、开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为 Mysql 5.0,使用java语言开发。 3、数据库文件名是jspzygx.sql ,系统名称zygx 4、系统首页
MySQL 中 Case When 语句可以实现多 条件 查询 的功能,比如可以根据不同的 条件 查询 结果进行分类,根据分类结果对数据进行汇总、计数或统计等操作。 Case When 语句的基本语法如下: select case [when condition1 then result1] [when condition2 then result2] [when condition3 then result3] [else default_result] from table_name; 其中,when 后的 条件 可以是表达式、逻辑运算符、比较运算符等,如果 condition1 结果为 true,就返回 result1,否则继续判断 condition2,以此类推。 比如,如果有这样一张用户表,其中包含了用户的姓名、性别、年龄、所在城市等信息: CREATE TABLE users ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, gender ENUM('male', 'female') NOT NULL, age INT NOT NULL, city VARCHAR(50) NOT NULL, PRIMARY KEY (id) INSERT INTO users (name, gender, age, city) VALUES ('Tom', 'male', 26, 'Beijing'), ('Lily', 'female', 23, 'Shanghai'), ('Mary', 'female', 32, 'Shenzhen'), ('Jack', 'male', 38, 'Guangzhou'), ('Lucy', 'female', 24, 'Hangzhou'), ('David', 'male', 29, 'Shanghai'), ('Emma', 'female', 27, 'Beijing'), ('Mike', 'male', 31, 'Guangzhou'), ('Ella', 'female', 28, 'Shenzhen'), ('John', 'male', 36, 'Hangzhou'); 我们可以使用 Case When 语句对用户数据进行分类,比如按照性别进行分类: SELECT gender, COUNT(*) AS count users GROUP BY gender ORDER BY WHEN gender='male' THEN 1 WHEN gender='female' THEN 2 ELSE 3 -- 输出结果如下: -- gender count -- male 4 -- female 6 这里用 Case When 语句对性别进行分类,count 统计每种分类的数量,同时使用 order by 指定分类的顺序。 除了精确匹配外,Case When 语句还可以使用 like 或 in 等 条件 表达式进行模糊匹配,比如按照年龄段进行分类: SELECT WHEN age < 20 THEN '少年' WHEN age BETWEEN 20 AND 30 THEN '青年' WHEN age BETWEEN 30 AND 40 THEN '中年' ELSE '老年' END AS age_group, COUNT(*) AS count users GROUP BY age_group; -- 输出结果如下: -- age_group count -- 青年 4 -- 中年 3 -- 老年 3 这里将用户按照年龄段进行分类,count 统计每种分类的数量,同时使用 as 将分类结果命名为 age_group。 Case When 语句可以灵活地使用在各种 查询 场景中,比如我们可以根据不同的 条件 返回不同的文本、数值或 日期 格式,也可以从多个字段中派生出新的字段等。需要注意的是,Case When 语句也需要谨慎使用,因为过多的分支会降低 查询 性能,建议根据实际需求进行调整。