mysql的表中字段如何进行累加
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql的表中字段如何进行累加相关的知识,希望对你有一定的参考价值。
count() 通过mysql函数进行累加 参考技术Adatetime类型字段累加原则上可以直接使用sum函数的,例如:
select sum(logtime) from logRecords
尽管可以执行,但是这种对于“时刻”的累加数是没有意义的。对于mySql来说其实际算法是将datetime类型字段值按4位年、2位月、2位日、2位时、2位分、2位秒顺序组成一个数字后再进行累加。假如表中只有两条记录,登录时间分别是
logtime
2016-07-15 13:55:12
2016-07-15 13:50:20
Sum累加的结果是:40321430270532,其实是没有太多意义的,除非编写自定义函数将其转换成时间日期的显示格式,也就是两千多年后的某个日子与时间,能说明什么呢?。
一般来讲,累加“时刻”没有意义,但是累加"用时"是有意义的, 如果需要对datetime类型字段进行累加,选取其中的单纯一种时间单位数(如日数、时数、秒数等)后再进行累加,才会有意义
MySQL 如何从今天记录的表中选择数据?
【中文标题】MySQL 如何从今天记录的表中选择数据?【英文标题】:MySQL How to SELECT data from table which recorded today? 【发布时间】:2011-12-02 18:06:27 【问题描述】:使用 PHP 和 MySQL。在我的表中,有 NOW() sql 函数记录的日期字段(日期时间)。该字段中数据的示例值为2010-10-07 10:57:36。如何选择今天的日月年的所有数据。我尝试使用如下代码:
SELECT * FROM table WHERE date=????
【问题讨论】:
【参考方案1】:SET @day = '2017-12-12' ;
SELECT * FROM table WHERE dateColumn BETWEEN DATE(@day) AND DATE_ADD(DATE(@day), INTERVAL 1 DAY ) ;
【讨论】:
【参考方案2】:使用这样的东西,它完全适用于我的代码(访问数据库):
select * from Table t where t.column>=Date() and t.column< Date() + 1
【讨论】:
【参考方案3】:试试这个
SELECT * FROM table WHERE DATE(my_date)=DATE(now())
my_date -> column name
【讨论】:
【参考方案4】:试试这个:
SELECT * FROM table WHERE date > CURDATE();
CURDATE()
将返回当前日期为2011-10-07
,在将datetime
s 与它进行比较时,它将被转换为2011-10-07 00:00:00
。
请注意,如果您使用DATE(date) = CURDATE()
,您将为表格中的每一行运行日期转换,如果您有很多行和/或您需要经常运行查询。还要确保你在date
上有一个索引,否则这两种方法都会更慢。
【讨论】:
如果您在查询结尾上方插入,分号可能会破坏这一点 'CURDATE' 不是可识别的内置函数名称。 @PradeepKumarPrabaharan:这听起来不像是 MySQL 错误。也许您正在运行 MSSQL?请改用GETDATE()
。【参考方案5】:
date_format
功能让你轻松切换各种粒度:
选择同一天的所有内容:
select * from table
where date_format(date, '%Y-%m-%d') = date_format(now(), '%Y-%m-%d');
从同一个月开始:
select * from table
where date_format(date, '%Y-%m') = date_format(now(), '%Y-%m');
同年:
select * from table
where date_format(date, '%Y') = date_format(now(), '%Y');
从同一时间开始:
select * from table
where date_format(date, '%Y-%m-%d %H') = date_format(now(), '%Y-%m-%d %H');
等等。
【讨论】:
'date_format' 不是可识别的内置函数名称。【参考方案6】:SELECT * FROM tableName WHERE DATE(fieldDate) = DATE(NOW());
【讨论】:
【参考方案7】:SELECT * FROM table where DATE(date)=CURDATE()
【讨论】:
Kaivosukeltaja 的解决方案在性能方面可能会更好 Msg 195, Level 15, State 10, Line 6 'CURDATE' 不是可识别的内置函数名称。 'DATE' 不是可识别的内置函数名称。 截至目前,CURDATE() 和 DATE() 函数都在 MySQL 5.0 到 beta 8.0 (当前最新版本为dev.mysql.com/doc/refman/5.7/en/…)。您确定您使用的是 MySQL 并且查询中没有其他语法问题吗?【参考方案8】:在之间使用。
select * from table date between '2010-10-06' and '2010-10-08';
【讨论】:
呃..今天是指用户打开我的页面的那一天,而不是 2010 年 10 月 8 日。顺便说一句,谢谢 denolk。以上是关于mysql的表中字段如何进行累加的主要内容,如果未能解决你的问题,请参考以下文章