sqlite: bagaimana cara menambahkan total waktu jj:mm:dd di mana tipe data kolom adalah DATETIME?

COLUMN

Ini adalah cuplikan kolom saya di sqlite db dan tipe datanya dalam skema ditentukan memiliki DATETIME. Sekarang saya ingin menerapkan beberapa fungsi agregasi seperti sum() untuk menghitung total kolom ini.

kueri yang saya gunakan adalah:

select sum(total_expend_time) from timetable; tetapi hasilnya menghasilkan 0,0.


person Prateek    schedule 03.01.2013    source sumber
comment
Jika Anda sedang mencari jawaban cepat maka inilah yang akhirnya membantu saya SELECT time(sum(strftime('%s', total_expend_time) - strftime('%s', '00:00:00')), 'unixepoch') FROM timetable   -  person Prateek    schedule 15.01.2013


Jawaban (2)


SQLite tidak memiliki tipe data DATETIME asli; nilainya disimpan sebagai string.

Anda harus menggunakan fungsi tanggal bawaan untuk mengonversi string ini menjadi beberapa detik sebelum Anda dapat menambahkannya:

SELECT sum(strftime('%s', total_expend_time) -
           strftime('%s', '00:00:00'       ))
FROM timetable

Jika Anda ingin memformatnya sebagai waktu, Anda harus mengonversinya kembali setelahnya:

SELECT time(sum(...), 'unixepoch') FROM timetable
person CL.    schedule 03.01.2013
comment
apa yang akan dikembalikan ini SELECT sum(strftime('%s', total_expend_time) - strftime('%s', '00:00:00' )) FROM timetable jumlah detik, seperti dalam kasus saya ini mengembalikan 1770 berapa nilainya. - person Prateek; 03.01.2013
comment
Ya, itulah yang saya tulis, dan apa yang dikatakan dokumentasi untuk %s. - person CL.; 03.01.2013

Ini berfungsi sempurna untuk saya:

SELECT time(
           sum( strftime('%s', total_expend_time) ),
           'unixepoch'
           )
FROM timetable

terima kasih CL!

person Deyan Petkov    schedule 03.02.2021