用于将Date转换为其他格式的SQL查询

时间:2011-06-02 07:16:43

标签: sql oracle date-conversion

感谢您的帮助。我无法在Date列中找出“Value”的类型/格式。我猜它是Julian Date格式。

paid_month ,值低于。

                  200901
                  200902

因此,请帮助编写SQL查询,将日期列中的上述值(主要是朱利安格式)转换为正常日期(MM / DD / YYYY)。

由于 罗希特夏尔

您好,

我很遗憾没有提供全部信息。

1)它是一个Oracle数据库。 2)给出的列是Paid_Month,值为200901,200902

3)我也很困惑,上述值给出了月份和如果我的猜测是对的,那么也不会给我。

4)如果它不是朱利安格式,那么也请帮我SQL至少得到mm / yyyy


我正在使用Oracle DB并运行查询 谢谢我的回答。

* *现在,我必须做相反的意思,将日期01/09/2010转换为具有6位数的字符串。 请帮助语法 - 选择to_char(01/01/2010,**

4 个答案:

答案 0 :(得分:2)

看起来像YYYYMM - 根据您的数据库变体,尝试STR_TO_DATE(paid_month, 'YYYYMM'),然后格式化。

注意:MM / DD / YYYY不是“正常”格式 - 只有美国人使用它。世界其他地方使用DD / MM / YYYY

答案 1 :(得分:0)

对于MySQL检查 http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format

示例:

SELECT DATE_FORMAT(NOW(), '%d/%m/%Y')

答案 2 :(得分:0)

对于MySQL,您可以使用STR_TO_DATE函数,请参阅http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_str-to-date

SELECT STR_TO_DATE(paid_month,'%Y%m');

听起来这个列包含一些正常日期和一些YYYYMM日期。如果目标是更新整个列,则可以尝试隔离YYYYMM日期并仅更新这些日期。类似的东西:

UPDATE YourTable
SET paid_month = DATE_FORMAT(STR_TO_DATE(paid_month, '%Y%m'), '%m/%d/%Y')
WHERE LENGTH(paid_month) = 6

答案 3 :(得分:0)

SELECT (paid_month % 100) + "/01/" + (paid_month/100) AS paid_day
FROM tbl;

我不确定oracle如何连接字符串。通常,你会看到||在SQL中:

SELECT foo || bar FROM ...

或功能:

SELECT cat (foo, bar) FROM ...