【问题标题】:Isolating the date data from a date time column从日期时间列中分离日期数据
【发布时间】:2022-01-19 02:22:00
【问题描述】:

我是一名初学者 Web 开发人员,最近一直在开发我的第一个数据库。我在编写一个 SQL 函数时遇到了一个问题,该函数需要对使用 DATETIME 数据类型的列进行不同的计数。该函数需要计算一个人工作的所有不同天数,但时间信息无关紧要,导致我的计数返回错误的结果。在计算列之前隔离日期信息的最佳方法是什么?

这是我目前在查询上的进展,我最终将把它放入一个函数中:

SELECT COUNT(task_name) / COUNT(DISTINCT time_worked) FROM `completed_tasks` WHERE volunteer_id = x;

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    使用Date 试试这个,它会消除时间戳的时间部分,但会保留日期

       SELECT COUNT(task_name) / 
        COUNT(DISTINCT 
        Date(time_worked)) FROM `completed_tasks` 
         WHERE 
       volunteer_id = x;
    

    【讨论】:

      【解决方案2】:

      您可以使用 CAST() 函数更改数据类型。

      试试这样:

      SELECT COUNT(task_name) / COUNT(DISTINCT CAST(time_worked AS DATE)) 
      FROM completed_tasks 
      WHERE volunteer_id = x;
      

      【讨论】:

        【解决方案3】:

        使用简单的DATE 函数

        CREATE TABLE completed_tasks(volunteer_id int,task_name varchar(50), time_worked datetime)
        
        INSERT INTO completed_tasks VALUES (1,'A',Now()),(1,'A',Now() - INTERVAL 1 DAY ),(1,'B',Now())
        
        SELECT COUNT(task_name) / COUNT(DISTINCT DATE(time_worked)) FROM `completed_tasks` WHERE volunteer_id = 1;
        
        | COUNT(task_name) / COUNT(DISTINCT DATE(time_worked)) | | -------------------------------------------------- -: | | 1.5000 |

        db小提琴here

        【讨论】:

          猜你喜欢
          • 2022-01-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多