Python 从SQL在Oracle中转换或转换时间戳函数?
我有一个为SQL Server表编写的SQL查询,希望将其转换为Oracle查询。如何编写此查询以使用Python 从SQL在Oracle中转换或转换时间戳函数?,python,sql-server,oracle,arcpy,Python,Sql Server,Oracle,Arcpy,我有一个为SQL Server表编写的SQL查询,希望将其转换为Oracle查询。如何编写此查询以使用CAST或to_TIMESTAMP而不是CONVERT ticket_sql = "select {0} from {1} where {2} >= '{3}' and CONVERT(time, {4}) '{5}' and jobid NOT LIKE '%ZZ%' ".format(self.ticket_id_field, self.ticket_audit_table_name
CAST
或to_TIMESTAMP
而不是CONVERT
ticket_sql = "select {0} from {1} where {2} >= '{3}' and CONVERT(time, {4}) '{5}' and jobid NOT LIKE '%ZZ%' ".format(self.ticket_id_field, self.ticket_audit_table_name, self.modified_date_field, last_date, self.modified_time_field, last_time)
正在转换的字段是self.modified\u time\u字段
,数据格式如下:11:13:38.682
上面的示例是为使用ArcPy的Python应用程序编写的。看起来像是一天中的某个时间值(没有日期)。我不知道SQL Server,但我假设它可能有这样的数据类型。甲骨文没有。除非您愿意将其保留为字符串(或者更好地保留为数字)——不管是哪种情况,这都是一个非常糟糕的主意——否则您将不得不认真考虑该数据表示什么,以及它应该如何在Oracle日期或时间戳数据类型中表示。(也许在SQL Server中,日期和时间戳组件是分开的?在Oracle中,它们必须一起保存)。因此,在开始“如何”操作之前,这是一个需要解决的问题。@mathguy为什么不使用
INTERVAL
来存储时间值?那么,在OP的例子中:间隔{4}小时到秒(3)
?(例如,interval'11:13:38.682'时秒(3)
)@gwestdev1您应该将self.modified\u date\u字段
和self.modified\u time\u字段
连接在一起,并用到\u TIMESTAMP()
@matthewmpeak-间隔测量事件或现象的持续时间,不是开始或结束时间。上午4:30和4.5小时的持续时间有很大区别。间隔是后者的,而不是前者。换句话说,“a.m.”、“p.m.”和“hh24”是Oracle中对DATE
数据类型有意义的名称;它们对时间间隔没有意义。@mathguy如果有人只需要存储一个时间值,就可以不使用时间间隔
,而知道它是从午夜到所讨论的时间的时间间隔吗?实际上,为什么不将时间间隔'11:13:38.682'存储到秒(3)
来表示11:13.36.682 AM
?它似乎比没有验证和日期/时间算术的字符串要好。