MYSQL timestamp 前一天
时间: 2023-09-12 17:03:09 浏览: 103
可以使用DATE_SUB函数来获取MYSQL timestamp的前一天。示例代码如下:
```
SELECT DATE_SUB('2022-01-01 12:00:00', INTERVAL 1 DAY);
```
这将返回'2021-12-31 12:00:00',即输入时间戳的前一天。你可以将你的时间戳替换为'2022-01-01 12:00:00',然后运行上面的代码即可。
相关问题
用idea使用spark语言抽取shtd_store库中base_province的全量数据进入Mysql的ods库中表base_province。字段名称、类型不变并添加字段create_time取当前时间,类型为timestamp类型,同时添加字段为etl_date类型为String,且值为当前日期的前一天日期(字段格式为yyyyMMdd)
好的,我会按照您的要求进行操作。
首先,您需要在idea中编写Spark程序,连接shtd_store库,并将数据抽取到Spark中。以下是代码示例:
```scala
import org.apache.spark.sql.SparkSession
object ExtractData {
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder()
.appName("ExtractData")
.master("local[*]")
.getOrCreate()
val url = "jdbc:mysql://localhost:3306/shtd_store"
val user = "your_username"
val password = "your_password"
val table = "base_province"
val df = spark.read.format("jdbc")
.option("url", url)
.option("user", user)
.option("password", password)
.option("dbtable", table)
.load()
// 添加create_time字段,取当前时间
val dfWithCreateTime = df.withColumn("create_time", current_timestamp())
// 添加etl_date字段,取当前日期的前一天
import org.apache.spark.sql.functions._
val yesterday = date_format(date_add(current_date(), -1), "yyyyMMdd")
val dfWithEtlDate = dfWithCreateTime.withColumn("etl_date", lit(yesterday))
// 将数据写入到Mysql的ods库中表base_province
val odsUrl = "jdbc:mysql://localhost:3306/ods"
val odsUser = "your_username"
val odsPassword = "your_password"
val odsTable = "base_province"
dfWithEtlDate.write.format("jdbc")
.option("url", odsUrl)
.option("user", odsUser)
.option("password", odsPassword)
.option("dbtable", odsTable)
.mode("overwrite")
.save()
}
}
```
请将代码中的`your_username`和`your_password`替换为您自己的MySQL数据库用户名和密码。
接下来,您需要在MySQL中创建ods库和表base_province,以下是SQL语句示例:
```sql
CREATE DATABASE ods;
USE ods;
CREATE TABLE base_province(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
province_id INT,
province_name VARCHAR(50),
create_time TIMESTAMP,
etl_date VARCHAR(8)
);
```
请将SQL语句中的数据类型和字段名与您实际需要的保持一致。
最后,您可以在idea中运行ExtractData程序,即可将shtd_store库中base_province的全量数据抽取到Mysql的ods库中表base_province,并添加create_time和etl_date字段。
mysql创建每一天的日期维度表
MySQL创建每一天的日期维度表通常用于时间序列数据分析或者需要按天粒度存储数据的场景。你可以使用SQL的DATE_FORMAT()函数配合自增ID来生成这样的表。以下是一个基本的例子:
```sql
CREATE TABLE date_dimension (
id INT AUTO_INCREMENT PRIMARY KEY,
created_date DATE,
day_of_week ENUM('Sunday', 'Monday', ..., 'Saturday'),
week_number INT,
month INT,
year INT
);
INSERT INTO date_dimension (created_date)
VALUES
(FROM_UNIXTIME(UNIX_TIMESTAMP(NOW()), '%Y-%m-%d'))
UNION ALL
SELECT DATE_SUB(created_date, INTERVAL 1 DAY)
FROM date_dimension
WHERE created_date >= FROM_UNIXTIME(UNIX_TIMESTAMP(NOW()), '%Y-%m-%d');
```
这个`date_dimension`表包含了日期、星期几、周数、月份和年份等信息。你可以通过自增长的主键ID来跟踪每一天,并且每次插入新的日期都会自动填充前一天的信息。
阅读全文