如果我想查询“date-1”,如何用Python2.7从MYSQLdb查询数据?

时间:2017-11-13 13:29:18

标签: python mysql sql debian mysql-python

所以,我需要每天从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中,怎么能写这个查询?

2 个答案:

答案 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')