【问题标题】:MySQL - Sum of digits of yearMySQL - 年份的数字总和
【发布时间】:2020-07-17 14:58:21
【问题描述】:

我需要获取格式为date 的年份的总和,例如1997 = 1+9+9+7 = 26。我必须在 MySQL 中使用SELECT 来完成。我尝试使用SUM 函数,但它只在几行中求和。

表名:列表。

在 phpMyAdmin 中,我正在执行以下命令并得到以下结果:

【问题讨论】:

  • 向我们展示您的尝试。还有你的表模式。这太笼统了。

标签: mysql sql date select sum


【解决方案1】:

你可以为此做算术:

set @year = 1997;    
select 
    floor(@year / 1000) 
    + floor(@year % 1000 / 100) 
    + floor(@year % 100 / 10)
    + floor(@year % 10) res

产量:

26

datedatetime 值开始,您可以先使用year() 提取年份部分:

set @mydate = '1997-01-01';    
select 
    floor(year(@mydate) / 1000) 
    + floor(year(@mydate) % 1000 / 100) 
    + floor(year(@mydate) % 100 / 10)
    + floor(year(@mydate) % 10) res

【讨论】:

  • 但是我有格式日期的年份,而不是整数。我已经编辑了我的问题。
  • 如何为表“list”的每一行输出这个结果?
  • @Clarity: 只是:insert into list select floor(year(mydate) / 1000) + ... from mytable
【解决方案2】:

或者你可以使用这样的东西。 1997-01-01 的结果

SELECT @result:=
    @First:= LEFT(year,1)+
    @Second:= SUBSTRING(year,2,1)+ 
    @Third:= SUBSTRING(year,3,1)+
    @forth:= SUBSTRING(year,4,1) 
FROM year;

    ---

    **Query #1**

    SELECT * FROM year;

| id  | year       | result |
| --- | ---------- | ------ |
| 1   | 1997-01-01 |        |
| 2   |            | 26     |

    ---

View on DB Fiddle

【讨论】:

  • 您的示例是“varchar(255)”中的年份,但我需要年份的格式“日期”。
  • @Clarity 我编辑了链接,现在是它的日期。也适用于日期,没有区别。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-13
  • 1970-01-01
  • 2017-03-04
  • 2018-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多