Я пытался создать в базе данных DuckDB таблицу цен на акции. Все работает нормально, за исключением даты (которая является EOD от Yahoo Finance): она должна быть 2024-01-02, но в БД: 2024-01-02 00:00:00.000. Что мне здесь не хватает? Я даже разместил SELECT CAST(Date AS DATE), но это тоже не помогло.
import yfinance as yf
import duckdb
import pandas as pd
from datetime import datetime, timedelta
# Download data
data = yf.download('AAPL', start='2024-01-01', rounding=True)
data.reset_index(inplace=True)
# Set Date column as a date without the time component
data['Date'] = data['Date'].dt.date
# Rename the 'Adj Close' column to 'Adj_Close'
data.rename(columns={'Adj Close': 'Adj_Close'}, inplace=True)
# Database connection path for DuckDB
db_path = "SPY.duckdb"
conn = duckdb.connect(db_path)
symbol = "SPY"
# Create table
create_table_query = f"""
CREATE TABLE IF NOT EXISTS {symbol} (
Date DATE UNIQUE,
Open FLOAT,
High FLOAT,
Low FLOAT,
Close FLOAT,
Adj_Close FLOAT,
Volume BIGINT
);
"""
conn.execute(create_table_query)
# Insert data into DuckDB with explicit casting of Date column
conn.execute(f"INSERT INTO {symbol} SELECT CAST(Date AS DATE), Open, High, Low, Close, Adj_Close, Volume FROM data")
Я пытался создать в базе данных DuckDB таблицу цен на акции. Все работает нормально, за исключением даты (которая является EOD от Yahoo Finance): она должна быть 2024-01-02, но в БД: 2024-01-02 00:00:00.000. Что мне здесь не хватает? Я даже разместил SELECT CAST(Date AS DATE), но это тоже не помогло. [code]import yfinance as yf import duckdb import pandas as pd from datetime import datetime, timedelta
# Download data data = yf.download('AAPL', start='2024-01-01', rounding=True) data.reset_index(inplace=True)
# Set Date column as a date without the time component data['Date'] = data['Date'].dt.date
# Rename the 'Adj Close' column to 'Adj_Close' data.rename(columns={'Adj Close': 'Adj_Close'}, inplace=True)
# Database connection path for DuckDB db_path = "SPY.duckdb" conn = duckdb.connect(db_path) symbol = "SPY"
# Create table create_table_query = f""" CREATE TABLE IF NOT EXISTS {symbol} ( Date DATE UNIQUE, Open FLOAT, High FLOAT, Low FLOAT, Close FLOAT, Adj_Close FLOAT, Volume BIGINT ); """ conn.execute(create_table_query)
# Insert data into DuckDB with explicit casting of Date column conn.execute(f"INSERT INTO {symbol} SELECT CAST(Date AS DATE), Open, High, Low, Close, Adj_Close, Volume FROM data")