मैं SQLite डेटाबेस में डेटाटाइम मान कैसे डालूं?


109

मैं एक SQLite डेटाबेस में डेटाटाइम मान सम्मिलित करने का प्रयास कर रहा हूं । ऐसा लगता है कि यह बहुत मुश्किल है, लेकिन जब मैं मूल्य को पुनः प्राप्त करने की कोशिश करता हूं तो एक त्रुटि होती है:

<डेटा पढ़ने में असमर्थ>

SQL कथन हैं:

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

जवाबों:


153

आपके लिए आवश्यक प्रारूप है:

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

ययय-एमएम-डड HH: mm: ss

यदि संभव हो तो, एक पैरामीटर क्वेरी का उपयोग करें क्योंकि यह आपको प्रारूपण विवरण के बारे में चिंता से मुक्त करता है।


इस तरह के तार के साथ तारीख से एक आदेश कैसे होता है?
इगोरगानापोलस्की

3
जब आप इस तरह की तारीखों को प्रारूपित करते हैं, तो दिनांक आदेश और शाब्दिक आदेश समान कार्य करते हैं। जैसे '2008-02-01'> '2007-02-01', '2008-01-02'> '2008-01-01' दोनों तार और तारीख के रूप में। लेकिन आपको इसके बारे में सख्ती से ध्यान देने की आवश्यकता नहीं है क्योंकि SQLite ORDER BY आपके लिए ऑर्डर करने का ध्यान रखेगा।
itowlson

7
ध्यान दें कि आप लेक्सिकल ऑर्डर का उपयोग करके अलग-अलग परिशुद्धता के साथ तारीखों की तुलना नहीं कर सकते हैं, उदाहरण के लिए "SELECT '2007-01-02 10:00:00'> '2007-01-02 10:00';" 1 लेकिन "चयनित डेटाइम ('2007-01-02 10:00:00')> डेटटाइम ('2007-01-02 10:00') लौटाता है;" रिटर्न 0.
शेन

@itowlson जब आपके पास बहुभाषी एप्लिकेशन है तो यह कैसे काम करेगा?
बत्तमीसी

46

SQLite में दिनांक संग्रहीत करने का तरीका है:

 yyyy-mm-dd hh:mm:ss.xxxxxx

SQLite में आपके द्वारा उपयोग किए जाने वाले कुछ दिनांक और समय फ़ंक्शन भी होते हैं। एसक्यूएल, तिथि और समय कार्यों के अनुसार एसक्यूएल को समझें


3
FYI करें, .xxxxxxयहाँ @ TorValamo के सिंटैक्स = .SSS=% में SQLite प्रलेखन, यानी आंशिक सेकंड।
फ्लैक डायनोनो

2
DateTime.parse ( '2016/05/28 14:27:00 -0300') strftime ( '% Y-% m-% d% एच:% एम:% S')।
rodvlopes

17

आपको STRFTIME फ़ंक्शन का उपयोग करके इसे सम्मिलित करने में सक्षम होने के लिए दिनांक स्ट्रिंग का स्वरूप बदलना होगा। कारण, एक महीने के संक्षिप्त नाम का कोई विकल्प नहीं है:

%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
%%  % 

विकल्प को पहले से स्वीकृत प्रारूप में दिनांक / समय प्रारूपित करना है:

  1. YYYY-MM-DD
  2. YYYY-MM-DD HH: MM
  3. YYYY-MM-DD HH: MM: SS
  4. YYYY-MM-DD HH: MM: SS.SSS
  5. YYYY-MM-DDThh: mm
  6. YYYY-MM-DDThh: mm: एस एस
  7. YYYY-MM-DDThh: mm: SS.SSS
  8. HH: MM
  9. HH: MM: SS
  10. HH: MM: SS.SSS
  11. अभी

संदर्भ: SQLite दिनांक और समय कार्य


हालाँकि तालिका में सूचीबद्ध नहीं है, डॉक्स यह भी
बताता है

10

CURRENT_TIMESTAMPजब आपको इसकी आवश्यकता हो तो उसका उपयोग करें , बजाय OF OF NOW()(जो MySQL है)


1
यह काम किया है, एक बात गलत है। UTC के बिना CURRENT_TIMESTAMP रिटर्न डेटाइम, क्या आप जानते हैं कि इस समस्या को कैसे हल किया जाए। अग्रिम में धन्यवाद!
उलुगबेक रो'ज़िम्बोयेव

8

पढ़ें यह : 1.2Date दुकान की तारीख और समय के लिए एवं समय सबसे अच्छा डेटा प्रकार है:

TEXT सबसे अच्छा प्रारूप है: yyyy-MM-dd HH:mm:ss

फिर इस पृष्ठ को पढ़ें ; यह तारीख और समय के बारे में सबसे अच्छी तरह से समझाता है SQLite। उम्मीद है इससे आपको मदद होगी


5
आपको प्रश्न के उत्तर पर विचार करना चाहिए, उन लिंक के साथ जो आपके उत्तर का समर्थन करते हैं, न कि केवल लिंक का एक गुच्छा
गोंज़ालो ।-

0

यह सबसे लोकप्रिय या कुशल तरीका नहीं हो सकता है, लेकिन मैं SQLite में मजबूत डेटाटाइप्स को छोड़ देता हूं क्योंकि वे सभी अनिवार्य रूप से तार के रूप में डंप किए जाते हैं।

मैंने SQLite लाइब्रेरी के चारों ओर एक पतली सी # रैपर लिखी है (जब SQLite का उपयोग C # के साथ, निश्चित रूप से) करने के लिए और SQLite से सम्मिलन और अर्क को संभालने के लिए जैसे कि मैं DateTime वस्तुओं के साथ काम कर रहा था।


यदि आप उस क्षेत्र के आधार पर छाँटना चाहते हैं तो यह तारीखों के लिए कटौती नहीं करता है; आप एक स्ट्रिंग तुलना के साथ समाप्त होते हैं ...
G__
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.