【发布时间】:2019-12-12 14:21:18
【问题描述】:
我有一个表Billing,其中有列
BILL_NO,CUSTOMER_NAME,PHONE_NO,BILLING_DATE,DELIVERY_DATE,TOTAL_AMOUNT
以下是推导billing_date 和Delivery_date 日期的逻辑。
orderdate = datetime.datetime.now().date()
if deliverydate != '':
deliverydate = datetime.datetime.strptime(deliverydate,'%d/%m/%Y').date()
else:
deliverydate = datetime.date(9999,12,31)
假设 delivery_date 的值为 9999-12-31
我尝试将这些值加载到 SQL Server 中
ins_query = 'INSERT INTO dbo.BILLING VALUES(?,?,?,?,?,?)'
data = (billno,customername,phoneno,orderdate.strftime('%d/%m/%Y'),deliverydate.strftime('%d/%m/%Y'),totalamount)
cur.execute(ins_query,data)
但我收到以下关于日期列的错误
pyodbc.DataError: ('22007', '[22007]
[Microsoft][ODBC SQL Server Driver][SQL Server]转换失败时
从字符串转换日期和/或时间。 (241)
(SQLExecDirectW)')
如何格式化日期列以加载到 SQL Server。我希望以DD/MM/YYYY 或YYYY/MM/DD 格式将日期格式加载到数据库中
【问题讨论】:
-
BILLING_DATE 和 DELIVERY_DATE 有哪些数据类型?看来您应该将值插入为日期,而不是字符串...
-
SQL Server 以 2019-12-10 20:31:35.120 的格式存储日期。如果您想要不同的格式,您可以根据 BILLING 表创建一个视图并使用 FORMAT(BILLING_DATE, 'dd/MM/yyyy', 'en-US') docs.microsoft.com/en-us/sql/t-sql/functions/… 格式化日期
-
@bernie ,BILLING_DATE 和 DELIVERY_DATE 列是 DATE 数据类型。在这种情况下,我应该如何插入值?
-
@RSax ,这意味着在日期参数的数据中,而不是给出“,orderdate.strftime('%d/%m/%Y')”我必须给出 FORMAT(ORDER_DATE,'dd /MM/yyyy,'en-US')
-
@rvssankar:将日期插入为日期,而不是字符串。也就是说:不要在日期上执行
.strftime()。
标签: python sql-server sql-server-2012 pyodbc