0

当我使用 python Sybase 包并执行游标 fetch() 时,其中一列是日期时间 - 在返回的序列中,它具有该值的 DateTimeType 对象。我可以在 sybasect 模块中找到它,但找不到此数据类型的任何文档。我希望能够将其转换为字符串输出 - 类似于将 strftime() 与 datetime 对象一起使用。
有这方面的信息吗?

4

2 回答 2

1

您最好的选择是安装egenix-mx-base软件包。这将使mxDateTime模块可用于sybase包,默认情况下,所有日期时间列将作为mxDateTime.DateTime对象返回(引用自sybase包文档)。

正如您将能够在mxDateTime文档中验证的那样,获取您的字符串输出将很容易。

于 2012-10-09T00:45:36.273 回答
1

核心问题是 DateTimeType 对象与 datetime 对象中指定月份的方式不同。

我写了一个小函数来处理这个问题。这样就不需要安装额外的模块,也不需要额外的 DateTime 转换。

欢迎对代码进行任何改进:-)

def ps_datetime_converter(date_time_type_object):
    # Convert from python-sybase DateTimeType format (months 0 to 11) to datetime type format
    try:
        dt_kwargs = {}
        dt_kwargs['year'] = date_time_type_object.year
        dt_kwargs['month'] = date_time_type_object.month + 1
        dt_kwargs['day'] = date_time_type_object.day
        dt_kwargs['hour'] = date_time_type_object.hour
        dt_kwargs['minute'] = date_time_type_object.minute
        dt_kwargs['second'] = date_time_type_object.second
        dt_kwargs['microsecond'] = date_time_type_object.msecond
        date_time_object = datetime(**dt_kwargs)
        return date_time_object
    except:
        print "Conversion from DateTimeType object to datetime object failed."
于 2015-08-03T15:49:25.330 回答