Bagaimana cara memasukkan nilai datetime ke database SQLite?


109

Saya mencoba memasukkan nilai datetime ke dalam database SQLite . Tampaknya berhasil tetapi ketika saya mencoba mengambil nilai, ada kesalahan:

<Tidak dapat membaca data>

Pernyataan SQL tersebut adalah:

create table myTable (name varchar(25), myDate DATETIME)
insert into myTable (name,mydate) Values ('fred','jan 1 2009 13:22:15')

Jawaban:


153

Format yang Anda butuhkan adalah:

'2007-01-01 10:00:00'

yaitu tttt-BB-hh JJ: mm: dd

Namun, jika memungkinkan, gunakan kueri berparameter karena ini membebaskan Anda dari kekhawatiran tentang detail pemformatan.


Bagaimana cara memesan berdasarkan tanggal dengan string seperti itu?
— IgorGanapolsky

3
Jika Anda memformat tanggal seperti ini, pengurutan tanggal dan pengurutan leksikal berfungsi sama. Misalnya '2008-02-01'> '2007-02-01', '2008-01-02'> '2008-01-01' baik sebagai string maupun sebagai tanggal. Tetapi Anda tidak perlu benar-benar peduli tentang ini karena SQLite ORDER BY akan mengurus pemesanan untuk Anda.
— itowlson

7
Perhatikan bahwa Anda tidak dapat membandingkan tanggal secara andal dengan presisi berbeda menggunakan pengurutan leksikal, misalnya "SELECT '2007-01-02 10:00:00'> '2007-01-02 10:00';" mengembalikan 1 tetapi "SELECT datetime ('2007-01-02 10:00:00')> datetime ('2007-01-02 10:00');" mengembalikan 0.
— Shane

@itowlson Bagaimana cara kerjanya bila Anda memiliki aplikasi multi bahasa?
— batmaci


17

Anda harus mengubah format string tanggal yang Anda masukkan agar dapat memasukkannya menggunakan fungsi STRFTIME. Alasannya, tidak ada opsi untuk singkatan bulan:

%d  day of month: 00
%f  fractional seconds: SS.SSS
%H  hour: 00-24
%j  day of year: 001-366
%J  Julian day number
%m  month: 01-12
%M  minute: 00-59
%s  seconds since 1970-01-01
%S  seconds: 00-59
%w  day of week 0-6 with sunday==0
%W  week of year: 00-53
%Y  year: 0000-9999
%%  % 

Alternatifnya adalah memformat tanggal / waktu ke dalam format yang sudah diterima:

  1. TTTT-BB-HH
  2. TTTT-BB-HH JJ: MM
  3. TTTT-BB-HH JJ: MM: SS
  4. TTTT-BB-HH JJ: MM: SS.SSS
  5. YYYY-MM-DDTHJ: MM
  6. TTTT-BB-HHTJJ: MM: SS
  7. YYYY-MM-DDTHJ: MM: SS.SSS
  8. HH: MM
  9. HH: MM: SS
  10. HH: MM: SS.SSS
  11. sekarang

Referensi: Fungsi Tanggal & Waktu SQLite


Meskipun tidak tercantum dalam tabel, dokumen juga menyatakan bahwa Anda dapat menambahkan 'Z' atau offset seperti '-0400'
— coolaj86

10

Gunakan CURRENT_TIMESTAMPsaat Anda membutuhkannya, bukan OF NOW()(yaitu MySQL)


1
ini berhasil, satu hal yang salah. CURRENT_TIMESTAMP mengembalikan tanggal waktu tanpa UTC, apakah Anda tahu cara mengatasi masalah ini. Terima kasih sebelumnya!
— Ulug'bek Ro'zimboyev

8

Baca Ini : DateJenis data 1.2 dan Time Datatype terbaik untuk menyimpan tanggal dan waktu adalah:

TEXT format terbaik adalah: yyyy-MM-dd HH:mm:ss

Kemudian baca halaman ini ; ini adalah penjelasan terbaik tentang tanggal dan waktu di SQLite. Saya harap ini membantu Anda


5
Anda harus mempertimbangkan untuk menjawab pertanyaan, dengan tautan yang mendukung jawaban Anda, bukan hanya sekumpulan tautan
— Gonzalo

0

Ini mungkin bukan metode yang paling populer atau efisien, tetapi saya cenderung melupakan tipe data yang kuat di SQLite karena semuanya pada dasarnya dibuang sebagai string.

Saya telah menulis pembungkus C # tipis di sekitar pustaka SQLite sebelumnya (saat menggunakan SQLite dengan C #, tentu saja) untuk menangani penyisipan dan ekstraksi ke dan dari SQLite seolah-olah saya berurusan dengan objek DateTime.


Tidak memotongnya untuk tanggal jika misalnya Anda ingin mengurutkan berdasarkan bidang itu; Anda berakhir dengan perbandingan string ...
— G__
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.