将日期转换为字符串SQL

将日期转换为字符串SQL,sql,oracle,Sql,Oracle,我正在数据仓库中构建报告,它依赖于比较一家餐厅的每日支票和付款。我需要能够过滤数据的日期字段,但它需要与字符串,看起来像美国的日期格式,但字符串是这样比较 Select a.* from xx a, xy b where a.payment_date = b.check_date a.payment_date的格式为DD-MON-YY(日期),b.check_date的格式为MM/DD/yyy,但它是一个字符串。非常感谢您提供解决此问题的最有效方法 使用以下方法将日期从字符串转换为日期:

我正在数据仓库中构建报告,它依赖于比较一家餐厅的每日支票和付款。我需要能够过滤数据的日期字段,但它需要与字符串,看起来像美国的日期格式,但字符串是这样比较

Select a.* from 
xx a, xy b
where 
a.payment_date = b.check_date

a.payment_date的格式为DD-MON-YY(日期),b.check_date的格式为MM/DD/yyy,但它是一个字符串。非常感谢您提供解决此问题的最有效方法

使用以下方法将日期从
字符串
转换为
日期


或者您也可以使用另一种方法,使用。

转换
检查日期
字符串
日期
,使用:


或者您也可以使用另一种方法,使用。

将两个字符串日期转换为实际日期(),这样您就可以在日期方面进行比较。

将两个字符串日期转换为实际日期(),这样您就可以在日期方面进行比较。

我想这对您可能有用

从中选择一个* xx a,xy b 哪里
convert(datetime,a.payment\u date)=convert(datetime,b.check\u date)

我想这可能对你有用

从中选择一个* xx a,xy b 哪里
convert(datetime,a.payment\u date)=convert(datetime,b.check\u date)

由于您询问的是效率问题,使用转换运算符执行
JOIN
将严重影响性能。有效的方法是添加一个real date列。不幸的是,它很少是现实的。这个字符串实际上来自哪里?是旧的遗留系统,它吐出字符串而不是日期。@Lomo_效应一个触发器,在插入/更新时将插入的字符串转换为新的日期列,这可能是一个解决方案。当然,在执行
JOIN
时会加快速度,但如果查询不具有时间敏感性,那么所涉及的工作可能不值得加快速度。@JoachimIsaksson什么更好:将字符串转换为日期并比较日期,或将日期转换为字符串并比较字符串??我无法添加列、生成触发器或类似的内容,因为我操作的是相当大的WH。因为您询问的是效率问题,使用转换运算符执行
JOIN
会严重影响性能。有效的方法是添加一个real date列。不幸的是,它很少是现实的。这个字符串实际上来自哪里?是旧的遗留系统,它吐出字符串而不是日期。@Lomo_效应一个触发器,在插入/更新时将插入的字符串转换为新的日期列,这可能是一个解决方案。当然,在执行
JOIN
时会加快速度,但如果查询不具有时间敏感性,那么所涉及的工作可能不值得加快速度。@JoachimIsaksson什么更好:将字符串转换为日期并比较日期,或将日期转换为字符串并比较字符串??我无法添加列、构建触发器或类似的内容,因为我操作的是相当大的WH.oracle不使用convert。它用于指定日期。oracle不使用convert。它用来表示日期。Thx,Joao它似乎很简单,但被证明非常有效。@Lomo_效应-要比较日期,除非您试图比较日期和时间,否则您应该始终在日期前面应用TRUNC()。Thx,Joao它似乎很简单,但被证明非常有效。@Lomo_效应-要比较日期,您应该始终应用TRUNC()在日期之前,除非您试图比较日期和时间。
SELECT a.*
FROM xx a, xy b
WHERE a.payment_date = TO_DATE(b.check_date, 'mm/dd/yyyy')