8

如何使用 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')

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

编辑:次要问题是字段长度问题。请参阅有关已接受答案的第一条评论。

4

4 回答 4

6

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

所以试试这个...

cursor.execute("
    INSERT INTO MyTable
    VALUES(
        1,
        'Having Trouble',
        '" + str(datetime.datetime.now()) + "'
    )
")
于 2013-04-10T21:05:38.267 回答
5

您可以使用以下代码:

# 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)
于 2013-04-10T21:17:05.130 回答
3

试试这个:

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

这种时间戳格式可以通过 MS SQL SERVER 进行转换,并且可以在 pymssql 中用于插入 datetime 类型的对象

于 2014-03-10T19:46:52.350 回答
0

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

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

pymssql 出现的地方是 smalldate 类型没有将 0014 识别为一年并且无法进行转换。

于 2014-08-08T21:47:50.583 回答