所以,我需要每天从MYSQLdb查询数据,这就是为什么我更喜欢使用查询实际日期查询 - 1数据。例如,如果我今天在11月13日运行我的脚本,我需要从11月12日开始的所有信息(从ACTUAL_DATE开始 - 在图片上)。
我在MYSQLdb中有一个列,如下所示:
这是否是任何查询,这是否有机会使用此“DATE-1”逻辑查询数据?因此,我必须分析ACTUAL_DATE列中的最后6个字符,因为最后2个显示当天,最后4个显示月份(年份并不重要!)
这个MYSQLdb每天刷新,这就是为什么我需要找到一种方法,我可以在这个表中查询真实日期 - 1天。
我知道代码看起来像这样:
connection = MySQLdb.connect(host='localhost',
user='user1',
passwd='',
db='database1',
use_unicode=True,
charset="utf8")
cursor = connection.cursor()
query = """ select #I NEED SOMETHING HERE..
from OSSZES
into outfile '/tmp/test.csv'
fields terminated by ';'
enclosed by '"'
lines terminated by '\n';
"""
cursor.execute(query)
connection.commit()
cursor.close()
但是,如果这个选择查询存在于mysqldb中,怎么能写这个查询?
答案 0 :(得分:1)
您可以使用STR_TO_DATE函数将VARCHAR格式格式化为DATETIME格式。
<强>查询强>
SELECT
*
FROM (
# test data replace this with your table name
SELECT
'Sunday, Nov 12' AS A
UNION ALL
SELECT
'Saturday, Nov 11'
)
AS records
WHERE
MONTH(STR_TO_DATE(A, '%W, %b %d')) = MONTH(NOW())
AND
DAY(STR_TO_DATE(A, '%W, %b %d')) = DAY(NOW()) - 1
<强>结果强>
A
----------------
Sunday, Nov 12
答案 1 :(得分:0)
也许您可以结合使用'pandas'和'datetime'模块:
import datetime as dt
import pandas as pd
df = pd.read_sql_table('OSSZES',connection)
df['ACTUAL_DATE'] = pd.to_datetime(df['ACTUAL_DATE'])
mask = df['ACTUAL_DATE'] < dt.date.today()
df_new = df.loc[mask]
df_new.to_csv('/tmp/test.csv')