如何使用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')
我已经搜索了那里的小文档,并反复搜索。
答案 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));