Python日期时间问题-仅年份

时间:2019-01-14 11:45:24

标签: python datetime

我编写了一个程序,该程序从Klients生日的sql值中获取并保存在i=[]中,但是我从datetime.datetime(xxxxx)那里获取了很多数据,我只需要年份,因为我希望获得我们客户的平均水平。

代码:

import psycopg2

from datetime import *


#verbindung mit dem server bzw. db
try:
    conn = psycopg2.connect("dbname='test' user='test' host='192.168.1.10' password='test'")
    print ("Connectet **********")
except:
    print ("I am unable to connect to the database")
#verbindung mit der tabele
cur = conn.cursor()
try:
    cur.execute("""SELECT bday from client""")
    print ("yes")
except:
    print ("I can't drop our test database!")

result = cur.fetchall()


i = []
for row in result:
    i.append(row)

print (i)
print (len(result))

输出:

...
(datetime.datetime(1967, 11, 7, 0, 0),), (datetime.datetime(1976, 1, 1, 0, 0),), (datetime.datetime(1978, 5, 3, 0, 0),), (datetime.datetime(1969, 6, 6, 0, 0),), (datetime.datetime(1977, 12, 26, 0, 0),), (datetime.datetime(1944, 8, 22, 0, 0),), (datetime.datetime(1954, 5, 31, 0, 0),), (datetime.datetime(1942, 12, 4, 0, 0),), (datetime.datetime(1967, 10, 16, 0, 0),), (datetime.datetime(1941, 7, 1, 0, 0),), (datetime.datetime(1937, 5, 17, 0, 0),), (datetime.datetime(2006, 6, 5, 0, 0),), (datetime.datetime(1996, 11, 25, 0, 0),), (datetime.datetime(1975, 3, 2, 0, 0),), (datetime.datetime(2007, 10, 22, 0, 0),), (datetime.datetime(1996, 7, 26, 0, 0),), (datetime.datetime(1991, 4, 4, 0, 0),), (datetime.datetime(1938, 11, 29, 0, 0),), 
....

我需要解决此问题的帮助。

2 个答案:

答案 0 :(得分:0)

psycopg返回元组,如果您仅从数据库中获得1列,则它返回包含1个元素[("a", ), ("a", )...]的元组列表

由于您获得日期时间,因此只能像row[0].year那样获得年份

for row in result:
    i.append(row[0].year)
print(i)

或类似的

i = [row[0].year for row in result]
print(i)

答案 1 :(得分:0)

这是您执行所需代码的版本:

import psycopg2
import datetime


# verbindung mit dem server bzw. db
try:
    conn = psycopg2.connect("dbname='test' user='test' host='192.168.1.10' password='test'")
    print("Connectet **********")
except:
    print("I am unable to connect to the database")
# verbindung mit der tabele
cur = conn.cursor()
try:
    cur.execute("""SELECT bday from client""")
    print("yes")
except:
    print("I can't drop our test database!")

rows = cur.fetchall()

i = [row.year for row, *_ in rows]

print(i)
print(len(i))