从SQL转换time()以获得每月销售PHP

时间:2018-06-20 15:35:58

标签: php mysql pdo

我想通过 sales 表进行月度销售,但是我使用 time()格式

存储日期数据

示例:

UserID | Product | Date
1      | Hot Dog | 1504363230
4      | Chicken | 1504695631
1      | Potato  | 1504761716
3      | Spinach | 1505003789

因此,如何在不将Date替换为 date()的情况下从那里创建月度销售?因为如果我要更改300K行,将花费很长时间

我该怎么办?

  

选择* FROM Sales WHERE用户ID =用户ID AND日期=?

输出必须是这样

  

最近一个月中的UserID 1做2笔交易,或者在此月中UserID 1做3笔交易   月份

4 个答案:

答案 0 :(得分:0)

PHP解决方案是在date函数中使用第二个参数:

let promisesArray = []
for(let i = 0; i < 10; i++){
    const promise = db.ref(`/questions/en/${i}`).once('value');
    promisesArray.push(promise)
}
return Promise.all(promisesArray)
    .then((snapshotContainsArrayOfSnapshots) => {
        let data = []
        snapshotContainsArrayOfSnapshots.forEach((snapshot) => {
            data.push(snapshot.val())
        })
        return JSON.stringify(data)
    })
  

可选的timestamp参数是一个整数Unix时间戳,如果未提供时间戳,则默认为当前本地时间。换句话说,它默认为time()的值。

答案 1 :(得分:0)

编辑:
我认为这应该为您工作。我想您想避免使用PHP的date(),但是MySQL的DATE()可以。

SELECT
    COUNT(*) AS nb_transaction,
    UserID
FROM
    sales
WHERE
    DATE(`Date`) LIKE '2018-06-%'

当然,将月份替换为您要查找的月份。


SQL(将比PHP更快):
您可以使用UNIX Timestamp将任何FROM_UNIXTIME()转换为任何格式:

FROM_UNIXTIME(`Date`, '%Y %D %M %h:%i:%s')


PHP:
time()函数返回一个UNIX Timestamp

如果要使用一个日期显示日期,则可以使用DateTime::setTimestamp

$date = new DateTime();
$date->setTimestamp($row['Date']);
echo $date->format('Y-m-d H:i:s');    // Hot Dog = 2017-09-02 14:40:30

或者不久之后:

echo (new DateTime())->setTimestamp($row['Date'])->format('Y-m-d H:i:s');

答案 2 :(得分:0)

您可以使用FROM_UNIXTIME在MySQL中将unix时间戳转换为日期时间字符串。

SELECT FROM_UNIXTIME(`Date`) as `Datetime` FROM sales

然后您可以使用MONTH或YEAR等其他日期函数对此进行扩展

SELECT MONTH(FROM_UNIXTIME(`Date`)) as `Month` FROM sales

答案 3 :(得分:-1)

val cLevel = List("ceo","cfo")
val managerLevel = List("manager","team leader")

import org.apache.spark.sql.functions._
def rankUdf = udf((jobTitle: String) => jobTitle match {
  case x if(cLevel.exists(_.contains(x)) || cLevel.exists(x.contains(_))) => "C-Level"
  case x if(managerLevel.exists(_.contains(x)) || managerLevel.exists(x.contains(_))) => "manager"
  case _ => "other"
})

df.withColumn("rank", rankUdf(col("job_title"))).show(false)

希望这会有所帮助