感谢您的帮助。我无法在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,**
答案 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 ...