使用pymssql将datetime对象插入SQL Server

时间:2013-04-10 21:02:47

标签: python sql-server windows pymssql

如何使用pymssql插入数据时对象?我知道SQL Server表期待一个日期时间对象,让我们说在第3位。我已经尝试了所有这三个:

cursor.execute("INSERT INTO MyTable VALUES(1, 'Having Trouble', datetime.datetime.now())")
cursor.execute("INSERT INTO MyTable VALUES(1, 'Having Trouble', 20130410)")
cursor.execute("INSERT INTO MyTable VALUES(1, 'Having Trouble', '20130410')")
cursor.execute("INSERT INTO MyTable VALUES(1, 'Having Trouble', GETDATE())")

我每次都得到同样的错误:

OperationalError: (241, 'Conversion failed when converting date and/or time from character string.DB-Lib error message 241, severity 16:\nGeneral SQL Server error: Check messages from the SQL Server\n')

我已经搜索了那里的小文档,并反复搜索。

5 个答案:

答案 0 :(得分:4)

您正在尝试插入未格式化为日期的字符串(datetime.datetime.now(),20130410,'20130410',GETDATE()),因此sql server无法解析日期...

所以试试这个......

cursor.execute("
    INSERT INTO MyTable
    VALUES(
        1,
        'Having Trouble',
        '" + str(datetime.datetime.now()) + "'
    )
")

答案 1 :(得分:4)

您可以使用此代码:

# a tuple with the data to be stored in db
data = (1, 'Having Trouble', datetime.datetime.now())
# perform the query 
cursor.execute("INSERT INTO MyTable VALUES(%s, %s, %s)" % data)

答案 2 :(得分:0)

试试这个:

timeStamp = str(datetime.datetime.now())[0:-3]

此时间戳格式可由MS SQL SERVER转换,并可在pymssql中用于插入datetime类型的对象

答案 3 :(得分:0)

对于面临同样问题的其他人,我的问题也不同。

我的一年被解析为0014;我认为这被解释为2014年。我花了一段时间才意识到发生了什么。

pymssql的用法是smalldate类型不会将0014识别为年份而无法进行转换。

答案 4 :(得分:0)

尝试使用python3 function getAccountStatus(string) { let regex = /Account\s*Status:\s*(\w+)/; return regex.exec(string)[1]; } function getStatus(string) { let regex = /[\d]\s*Status:\s*(\w+)/; return regex.exec(string)[1]; } let string1 = 'Account Status: Open\nCode: 1632585 Status: Open'; console.log('String1: ' + string1.replace('\n', ' / ')); console.log('Account Status (string1): ' + getAccountStatus(string1)); console.log('Status (string1): ' + getStatus(string1)); let string2 = 'Account Status: Closed\nCode: 1632585 Status: Open'; console.log('String2: ' + string2.replace('\n', ' / ')); console.log('Account Status (string2): ' + getAccountStatus(string2)); console.log('Status (string2): ' + getStatus(string2));