mysql的表中字段如何进行累加

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql的表中字段如何进行累加相关的知识,希望对你有一定的参考价值。

count() 通过mysql函数进行累加 参考技术A

datetime类型字段累加原则上可以直接使用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,在将datetimes 与它进行比较时,它将被转换为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的表中字段如何进行累加的主要内容,如果未能解决你的问题,请参考以下文章

如何给MySQL数据库的表中的密码字段设置长度限制?

如何将mysql数据库的表中字段类型为int(存放时间戳)改为datetime类型,并保证数据不知丢

Mysql

MySQL 如何从今天记录的表中选择数据?

如何从mongodb的表中读取各字段对应的类型

如何在mysql表中搜索json数组字段中的字段?