从SQL Server中,我需要能够根据日期列从Oracle数据库中提取一些信息。将SQL Server日期转换为Oracle
SET @foo = 'SELECT * from OPENQUERY(' + @LinkedServer +
', ''SELECT *
FROM Table1
WHERE date_revised > '''''[email protected]+'''''')'
不介意'
的号码是否关闭......我剪掉了一些东西以使其缩短。我曾尝试在SQL Server端使用convert()
,但我似乎无法找到Oracle接受的格式,所以它一直在抛出错误。
至少,我需要日期,小时和分钟。当测试要在SQL Developer(Oracle)的值,以找出可以接受的格式,我一直运行到这一行为:
select to_date('2010-11-15 12:21:00', 'yyyy/mm/dd hh:mi:ssam') from dual
15-NOV-10
很显然,我指定我想要的时间,但它只是不同意我的看法。我一直在这个问题上停留太久。
简而言之,如何将SQL Server datetime
格式化为Oracle的to_date
函数将接受的格式,以及如何使该函数正确显示日期和时间?
'DATE'有**无格式**。格式化DATE值由客户端完成,而不是服务器(这就是你所看到的)。如果你需要使用特定格式的输出,你需要使用'to_char()'(在Oracle端)。看到这里:http://sqlfiddle.com/#!4/d41d8/4378 –
@a_horse_with_no_name为了使用上面指定的'@ myDate',我需要有一个'varchar'的权利?当我对'datetime - > varchar'进行类型转换时,是不是变成了某种格式?我尝试了使用to_char的建议,但我得到的错误是:OLE DB提供程序“OraOLEDB.Oracle”对于链接服务器“TED_IMCD”返回的消息“ORA-01841:(full)year必须在-4713和+9999之间,而不是0“。' 动态SQL获得评估为'WHERE date_revised> to_char(timestamp'2012年11月15日上午11:12','YYYY.MM.DD HH24:MI:SS')' – Jeff
您需要传递:1.代表日期是已知的格式。 2. TO_CHAR的参数,它再次定义了该格式。 'to_char(timestamp'Nov 15 2012 11:12 AM','YYYY.MM.DD HH24:MI:SS')'没有实现先前的答案。 –