jquery Datatble日期时间字段按字符串排序

jhkqcmku  于 2023-03-01  发布在  jQuery
关注(0)|答案(2)|浏览(188)

我的django网页应用有一个Datatble,后端发送更新为“Febru.14,2023,3.58p.m.”的字段的日期。当我使用排序功能时,它总是按字母顺序排序,其中“April 24,2023,10:04a.m.”在Feb之前,因为按字母顺序A大于F,所以如何解决这个问题?我尝试了datatble jquery文档中的一些和一些StackOverflow的答案,但它没有给我想要的输出

np8igboo

np8igboo1#

jquery导入后,导入momentjs

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

并添加以下脚本

<script type="text/javascript">
    $("#datatble_id").DataTable({
        columnDefs: [
            {
                targets: [0], // your field position
                type: 'datetime',
                render: function (data, type, row, meta) {
                    var momentObj = moment(data, 'MMM. DD, YYYY, h:mm a');
                    if (type === 'sort') {
                        return momentObj.unix();
                    }
                    return momentObj.format('MMM. DD, YYYY, h:mm a');
                },
                orderable: true
            }
        ]
    });
</script>
7gyucuyw

7gyucuyw2#

使用此postgres代码.
使用虚拟表作为

create table test (
  datex text
)

插入数据

insert into test (datex) values ('Feb. 14, 2023, 3:58 p.m.');
insert into test (datex) values ('April 24, 2023, 10:04 a.m.');

select * ,
split_part(datex, ' ', 1),--get Month string
rtrim(split_part(datex, ' ', 2),','),--get day string
rtrim(split_part(datex, ' ', 3),','),--get year string
EXTRACT(MONTH FROM TO_DATE(split_part(datex, ' ', 1), 'Mon')),--convert month into number
(rtrim(split_part(datex, ' ', 3),',')||'-'||TO_CHAR(EXTRACT(MONTH FROM TO_DATE(split_part(datex, ' ', 1), 'Mon')), 'fm00')||'-'||rtrim(split_part(datex, ' ', 2),','))::date as newdat
from test order by newdat

我使用"split part"函数拆分字符串,然后将其转换为date列。
然后使用"order by"对日期列进行排序。

相关问题