我在下面的查询中,我可以使用id列中的<StackPanel Orientation="Vertical" >
<!-- Control content -->
<local:ChartBar SecondaryContent="Secondary Content One">
<StackPanel Orientation="Vertical">
<Label>Chart Bar</Label>
<Ellipse Height="30" Width="60" Fill="GreenYellow" Opacity="0.2" />
<Label>Other stuff, etc. etc.</Label>
</StackPanel>
</local:ChartBar>
<!-- Templated viewmodel content -->
<local:ChartBar Content="{Binding RandomViewModelProperty}" IsExpanded="True">
<local:ChartBar.ContentTemplate>
<DataTemplate>
<Label Background="Beige" Content="{Binding}" Margin="20" />
</DataTemplate>
</local:ChartBar.ContentTemplate>
<local:ChartBar.SecondaryContent>
<ComboBox>
<TextBlock Text="One" />
<TextBlock Text="Two" />
<TextBlock Text="Three" />
</ComboBox>
</local:ChartBar.SecondaryContent>
</local:ChartBar>
</StackPanel>
提取日期。但现在我想获取最后一年的数据,从id列中比较这个日期。
to_date(substr(id, 1, 14), 'YYYYMMDDHH24MISS')
答案 0 :(得分:1)
如果您想在一年前获得与今天相同或更晚的数据,那么:
where id >= to_number(to_char(add_months(sysdate,-12), 'YYYYMMDD'))*10000000000
这假定您在问题中给出了正确的位数。否则,您可能需要追加/删除最终数字中的一些零。
今天,右边的表达式会产生这个数字:
201508310000000000
sysdate
是将当前时间戳记作为datetime
的Oracle方法。
add_months(...,-1)
从那天起减去1年,所以如果我们今天(2016年8月31日)这样做,我们会201510831
。
to_char(..., 'YYYYMMDD')
将日期时间转换为字符串,格式为YYYYMMDD
。这样就会产生字符串20150831
。
to_number(...)
将该字符串转换为数字数据类型,即转换为20150831
。
*10000000000
将该数字相乘,以使其与id
范围相似的范围相同,从而得出最终结果201508310000000000
。