将存储的Month Name作为字符串转换为delphi中sql中正确的月号顺序

时间:2017-12-08 15:22:02

标签: sql delphi ms-access ado

我搜索了这个论坛和其他人,但无法在我的Delphi 2010应用程序中获得解决方案。

我想按正确的月份顺序而不是按字母顺序命名我的结果。

这是我的代码:

hyear

hmonthprovHedis是表{{1}}中的字符串字段,我希望在1月到2月之间按顺序在dbgrid中显示结果。我希望这是有道理的。

我现在得到的是按月按字母顺序排列。

任何帮助表示赞赏。我是自学成才的初学者/新手(实际上是医生),所以请不要苛刻或居高临下的言论。

1 个答案:

答案 0 :(得分:1)

将其设为子查询:

select
  *
from
  provHedis
where
  provLastName = ''' + cbPLName.Text +'''
  and
  hyear = ''' + cbYear.Text + '''
    order by case hmonth
                when 'January' then 1
                when 'February' then 2
                when 'March' then 3
                when 'April' then 4
                when 'May' then 5
                when 'June' then 6
                when 'July' then 7
                when 'August' then 8
                when 'September' then 9
                when 'October' then 10
                when 'November' then 11
                when 'December' then 12
                else 13
            end, 
            hyear

或:

ORDER BY [hyear],MONTH('1' + [hmonth] +'00')

或者看到这个答案:

convert month name in varchar to date so as to order by month

你可以有一个DATETIME字段更容易缩短(不必在那里进行计算),如果你想显示你可以使用的月份名称:

DATENAME ( month, DateField )