如何在sql中为每个日期分类数据?

Kas*_*age 3 sql database oracle date date-arithmetic

我正在使用Oracle sql developer.我必须将一些数据分类到Date表中.

我用TO_CHAR函数来改变日期格式.

select to_char(txn_date, 'dd-mon-rrrr') my_day, some_coloums
from mwt_wallet_transactions 
order by my_day;
Run Code Online (Sandbox Code Playgroud)

上面的一个没关系.但我希望得到这样的日期:

select to_char( txn_date, 'dd-mon-rrrr') my_day, some_coloums
from mwt_wallet_transactions 
where my_day like '08-feb-2015'
order by my_day;
Run Code Online (Sandbox Code Playgroud)

我通过互联网搜索了这个,大多数人都要求使用这样的CONVERT功能:

select convert (VARCHAR(10), txn_date , 23 )  my_day, some_colomns
from mwt_wallet_transactions 
where my_day like '08-feb-2015'
order by my_day;
Run Code Online (Sandbox Code Playgroud)

但它对我不起作用.帮帮我解决这个问题!

Lal*_*r B 6

my_day喜欢'08 -feb-2015'

我认为你在SELECTIONFILTER PREDICATE之间感到困惑.

另外,请记住,''08-feb-2015'不是日期,它是一个字符串.

您希望根据DATE值过滤行.因此,如果您没有时间部分,请使用或使用ANSI Date文字将RHS上的文字转换为DATE.TO_DATE

现在,请记住,DATE有日期和时间元素,所以你需要 -

  • 要么使用TRUNC日期列来摆脱时间元素
  • 或者,使用DATE范围条件以获得更好的性能,因为它将使用日期列上的任何常规索引.

我假设my_day作为日期列.将过滤器修改为:

使用ANSI Date文字:固定格式'YYYY-MM-DD'

where my_day >= DATE '2015-02-08' and   my_day < DATE '2015-02-09'
Run Code Online (Sandbox Code Playgroud)

或者,TO_DATE使用适当的格式模型.请记住,TO_DATENLS依赖,所以我已经使用NLS_DATE_LANGUAGE,使它NLS独立.

WHERE my_day >= TO_DATE('08-feb-2015','dd-mon-yyyy','NLS_DATE_LANGUAGE=american') 
AND   my_day < TO_DATE('09-feb-2015','dd-mon-yyyy','NLS_DATE_LANGUAGE=american')
Run Code Online (Sandbox Code Playgroud)

以上.my_day假定为静态日期列,而不是列别名.