将输入从整数更改为字符串返回整数

时间:2015-12-04 01:54:49

标签: python sqlite

我有一个表格,它以HH:MM:SS(10:00:00)的格式发送一个时间字符串,它从数据库中检索数据,然后显示该时间的温度和湿度。但我想如果他们进入上午10点(10:00:00)它会从10:00:00到10:59:59搜索数据库。我使用sqlite3所以没有时间戳。这也是在python中。 所以我真的问是否有办法在00:59:59转换为整数,然后将其更改回在查询中使用的字符串。数据库中的时间也是文本和格式相同

#!/usr/bin/python
import sqlite3 as lite
import sys
import cgi, cgitb

form = cgi.FieldStorage()

dateValue = form.getvalue('dateValue')
timeValue  = form.getvalue('timeValue')

con = lite.connect('/var/www/readings.db')

with con:
    cur = con.cursor()
    if(dateValue and timeValue != None):

        cur.execute("""SELECT temperature, humidity FROM readings WHERE dateReading = ? AND timeReading = ? LIMIT 1""",(dateValue, timeValue))
        read = cur.fetchall()

        if(len(read) > 0):

            print "Content-type:text/html\r\n\r\n"
            print "<html>"
            print "<head>"
            print "<title>Hello - CGI Program</title>"
            print "</head>"
            print "<body>"
            print "<h2>Temperature %s</h2>" % (read[0][0])
            print "<h2>humidity %s</h2>" % (read[0][1])
            print "</body>"
            print "</html>"
        else:
            print "Content-type:text/html\r\n\r\n"
            print "<html>"
            print "<head>"
            print "<title>Hello - CGI Program</title>"
            print "</head>"
            print "<body>"
            print "<h2>No entry for that date or time</h2>"
            print "</body>"
            print "</html>"


    elif(dateValue and timeValue == None):
        print "Content-type:text/html\r\n\r\n"
        print "<html>"
        print "<head>"
        print "<title>Hello - CGI Program</title>"
        print "</head>"
        print "<body>"
        print "<h2>Please enter a date or time</h2>"
        print "</body>"
        print "</html>"

2 个答案:

答案 0 :(得分:0)

假设您以String格式显示当前时间:

function __construct() 
{
    parent::__construct();
    if(! $user = $this->session->userdata('user_data');)
    {
         return false;
    }
}

您可以使用timeString = "10:59:16" 方法在每个冒号实例(“:”)处拆分此字符串。这将返回一个包含3个元素的列表。

split

您可以存储这些元素并执行您选择的任何计算。

timeList = timeString.split(":")
print(timeList) -> ["10","59","16"]

完成计算或调整变量后,可以通过连接将它们组合回字符串。

hours = int(timeList[0]) -> 10
minutes = int(timeList[1]) -> 59
seconds = int(timeList[2]) -> 16

我希望这会有所帮助。祝你好运Cameron!

答案 1 :(得分:0)

这似乎可以在SQLite查询中使用Like clause。如果您的&#34;时间戳&#34;是字符串,而不是

 cur.execute("""SELECT temperature, humidity FROM readings WHERE dateReading = ? AND timeReading = ? LIMIT 1""",(dateValue, timeValue))

使用类似

的内容
cur.execute("""SELECT temperature, humidity FROM readings WHERE dateReading = ? AND timeReading like ? LIMIT 1""",(dateValue, '{0:02}:__:__'.format(selected_hour))

其中selected_hour已分配用户选择的小时值。此查询应选择与所选日期值匹配的所有记录以及小时与所选值匹配的位置。

或者,我想

cur.execute("""SELECT temperature, humidity FROM readings WHERE dateReading = ? AND timeReading like ? LIMIT 1""",(dateValue, '{0:02}%'.format(selected_hour))

也可以做到这一点。