In Pandas
pd.to_datetime
import pandas as pd
# Sample DataFrame
data = {'date_string': ['2023-01-01', '2023-01-02', '2023-01-03']}
df = pd.DataFrame(data)
# Convert string to datetime
df['date_datetime'] = pd.to_datetime(df['date_string'])
print(df)
In PySpark
to_timestamp
from pyspark.sql import SparkSession
from pyspark.sql.functions import to_timestamp, col
# Initialize Spark session
spark = SparkSession.builder.appName("DateTimeConversion").getOrCreate()
# Sample DataFrame
data = [('2023-01-01',), ('2023-01-02',), ('2023-01-03',)]
columns = ["date_string"]
df = spark.createDataFrame(data, columns)
# Convert string to timestamp
df = df.withColumn("date_timestamp", to_timestamp(col("date_string"), "yyyy-MM-dd"))
# If you only need the date part, you can cast to date type
df = df.withColumn("date_date", col("date_timestamp").cast("date"))
df.show()
In the PySpark example, to_timestamp requires the format of the input string to be specified (in this case, “yyyy-MM-dd”). The result is a timestamp, which you can then cast to a date if you only need the date part without the time.
Pyspark SQL
PySpark 是 Apache Spark 的一个 Python API,它提供了分布式数据处理的功能。在 PySpark 的 SQL 模块中,to_date 是一个用于将字符串或数值类型转换为日期类型的函数。例如:
from pyspark.sql.functions import to_date
df = df.withColumn("date_column", to_date(df["string_date_column"]))
各种SQL
在SQL中,把字符串转换为日期通常依赖于你所使用的数据库管理系统(DBMS)提供的特定函数。以下是一些流行的DBMS中如何将字符串转换为日期的例子:
MySQL
在MySQL中,你可以利用STR_TO_DATE()函数,这个函数需要两个参数:待转换的字符串和该字符串对应的日期格式。
SELECT STR_TO_DATE('2023-04-01', '%Y-%m-%d') AS converted_date;
PostgreSQL
PostgreSQL提供了TO_DATE()函数,与MySQL类似,也需要指定字符串的格式。
SELECT TO_DATE('2023-04-01', 'YYYY-MM-DD') AS converted_date;
SQL Server
在SQL Server中,CONVERT()函数可以用于多种数据类型之间的转换,包括字符串到日期。当转换日期时,通常可以省略格式说明,只要字符串的格式是SQL Server能识别的。但为了更精确的控制,也可以提供一个样式代码。
-- 不指定样式代码(假设字符串格式是SQL Server可识别的)
SELECT CONVERT(DATE, '2023-04-01') AS converted_date;
-- 或者,使用样式代码(尽管在这个特定例子中不是必需的)
SELECT CONVERT(DATE, '01-04-2023', 105) AS converted_date; -- 105代表日-月-年的格式
Oracle
Oracle数据库使用TO_DATE()函数来转换字符串为日期,并且也需要你指定字符串的格式。
SELECT TO_DATE('2023-04-01', 'YYYY-MM-DD') AS converted_date FROM DUAL;
请注意,FROM DUAL是Oracle特有的,用于从不需要实际表的情况下返回单行。