Varcharni Datetime ga qanday aylantirish mumkin?

Access 2003 dan foydalanish

Jadval

ENO Time

001 020000
001 040000
001 220000
002 030000
002 050000
005 230000

So on…,

Vaqt sana turi Ma'lumotlar bazasida Varchar. Varcharni Datetime ga qanday aylantirish mumkin?

Bu erda men ENO uchun umumiy vaqt olishni xohlayman.

Select eno, sum (time) from table group by eno

Bu ma'lumotlar turiga mos kelmaslik mezonlari xatosi kabi xatolarni ko'rsatadi

Expected Output

001 26:00:00
002 08:00:00

So on…,

So'rov yordami kerak.


person Gopal    schedule 17.08.2009    source manba


Javoblar (1)


Bir necha soniya ichida ishlaganingiz ma'qul. Mid() funktsiyasidan satrni ajratish va soniyalar sonini hisoblash, vaqtlarni yig'ish va natijani xohlagancha formatlash uchun foydalaning. Agar siz uni bitta so'rov sifatida yozsangiz, bir xil uzun iborani uch xil joyda ishlatishingiz kerak bo'ladi, shuning uchun yaxshi o'qilishi uchun men buni ikkita so'rov sifatida bajaraman. Birinchisi:

SELECT eno, sum(val(mid(time,1,2))*3600+val(mid(time,3,2))*60+val(mid(time,5,2))) AS secs
FROM table
GROUP BY eno;

Ushbu so'rovni kirishda "enozumlar" sifatida saqlang, masalan. Ikkinchi so'rov:

SELECT eno, format(secs/3600, "00:") & format((secs/60 Mod 60), "00:") & format(secs Mod 60, "00")
FROM enosums;

Ushbu usulni taklif qilishimning sababi shundaki, agar siz datetime qiymatlariga aylantira olsangiz ham (buni Mid() funksiyasi va birlashtirish operatoridan foydalanib, "hhmmss" qatorini "hh:mm:ss" formatiga aylantirishingiz mumkin va keyin TimeValue funksiyasini qo'llang), buni kerakli chiqish formatida chop etishning oson yo'li yo'q, chunki Format() funksiyasi faqat 23:59:59 gacha boradi va keyin 00:00:00 ga qaytariladi.

person Todd Owen    schedule 17.08.2009