【问题标题】:python mysql.connector selecting rows with current date in a JOIN clause [duplicate]python mysql.connector在JOIN子句中选择当前日期的行[重复]
【发布时间】:2020-11-05 01:59:42
【问题描述】:

我有以下一段代码,它连接两个表格并在二维列表中打印

print("Resident:\tRoom:\t\tLast check-in:")
print(' ')
join = "SELECT users.name, users.room, attendance.clock_in FROM users JOIN attendance ON users.id = attendance.user_id"
cursor.execute(join)
output = cursor.fetchall()
for x in range(len(output)):
    for y in range(len(output[x])):
        print(output[x][y], end = '\t | \t')
    print()

给我以下输出:

Resident:   Room:       Last check-in:
 
Name 1   |  W235     |  2020-05-10 17:57:17  |  
Name 2   |  E289     |  2020-05-10 17:58:08  |  
Name 1   |  W235     |  2020-05-10 18:18:22  |  
Name 2   |  E289     |  2020-05-10 18:18:36  |  
Name 1   |  W235     |  2020-05-10 18:18:41  |  
Name 1   |  W235     |  2020-05-16 16:01:38  |  
Name 2   |  E289     |  2020-05-16 16:07:31  |  
Name 2   |  E289     |  2020-05-16 17:13:50  |  
Name 2   |  E289     |  2020-05-16 17:13:53  |  
Name 2   |  E289     |  2020-05-16 17:13:58  |  
Name 1   |  W235     |  2020-06-29 22:41:23  |  
Name 2   |  E289     |  2020-07-15 16:27:13  |  
Name 1   |  W235     |  2020-07-15 16:27:23  | 

我只需要输出今天签入的那些行(在我的输出中是最后两行)。我尝试使用我的“加入”行进行操作,例如,将其更改为:

join = "SELECT users.name, users.room, attendance.clock_in FROM users JOIN attendance ON users.id = attendance.user_id AND attendance.clock_in LIKE CURRENT_DATE"

但在我所有的尝试中,我得到的是空输出而不是我需要的:

Resident:   Room:       Last check-in:

那么如何正确键入它,以便光标只选择包含今天日期的行?

【问题讨论】:

  • 您确定attendance.clock_in LIKE CURRENT_DATE 部分属于您的JOIN 吗?也许它会更适合 WHERE
  • @BeChillerToo 我实际上尝试将它放在 WHERE 但它仍然给我空输出
  • 什么是CURRENT_DATE?请编辑您的问题以显示您的完整代码
  • @BeChillerToo 这不是我在我的程序中声明的,我只是找到它online 并尝试将其应用到我的程序中。

标签: python mysql mysql-python


【解决方案1】:
join = "SELECT users.name, users.room, attendance.clock_in FROM users JOIN attendance ON users.id = attendance.user_id WHERE attendance.clock_in >= CURDATE() AND attendance.clock_in < CURDATE() + INTERVAL 1 DAY"

【讨论】:

    【解决方案2】:
    join = "SELECT users.name, users.room, attendance.clock_in FROM users " \
           "JOIN attendance ON users.id = attendance.user_id " \
           "WHERE attendance.clock_in >= CURDATE() " \
           "AND attendance.clock_in < CURDATE() + INTERVAL 1 DAY"
    

    【讨论】:

      猜你喜欢
      • 2013-08-22
      • 1970-01-01
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 2023-03-15
      • 2015-03-14
      • 2014-03-23
      • 1970-01-01
      相关资源
      最近更新 更多