9

मेरे पास एक टेस्ट क्लास और ExecutionDate प्रॉपर्टी है जो केवल दिनांक संग्रहीत करती है लेकिन जब हम [DataType(DataType.Date)] का उपयोग करते हैं जो डेटाबेस में समय भाग भी संग्रहीत करता है लेकिन मुझे केवल दिनांक भाग चाहिए।स्टोर डेटाबेस में केवल दिनांक समय नहीं है सी #

public class Test 
{ 
    [Key] 
    public int Id { get; set; } 

    [DataType(DataType.Date)] 
    public DateTime ExecutionDate { get; set; }  
} 

क्या एंटिटी फ्रेमवर्क का उपयोग कर डीबी में केवल समय पर स्टोर करने का कोई तरीका है? कृपया मेरी मदद करो ....

मैं स्नैपशॉट जब उपयोग [DataType(DataType.Date)] उस समय भाग 00:00 मैं हटा दें कि

enter image description here

+0

ठीक है, आपके डेटाबेस तालिका में कॉलम के ** डेटाटाइप ** क्या है ?? यदि आपके डेटाबेस में कॉलम 'DATETIME' है - तो निश्चित रूप से आपको संग्रहीत दिनांक और समय मिलता है। ** डेटाबेस कॉलम ** डेटाटाइप 'DATE' का होना चाहिए - न केवल सी # कक्षा पर आपकी विशेषता! –

+0

अपने डेटाबेस कॉलम को 'DATE' बनाएं! –

+0

एक अधिक समस्या देखने के बाद एक भंडारण समस्या है। एक डेटाटाइम एक डेटाटाइम है भले ही समय का हिस्सा कुछ भी सेट न हो। आपका टूल जो तालिका की सामग्री दिखा रहा है, केवल डेटाटाइम के लिए डिफ़ॉल्ट प्रारूप दिखाता है। यदि आप timbart को डीबी सामग्री देखने के लिए उपयोग किए गए टूल की सेटिंग को बदलना नहीं चाहते हैं। – Ralf

उत्तर

14

मुझे लगता है कि आप डेटाबेस स्तंभ प्रकार निर्दिष्ट करने के लिए कोशिश कर रहे हैं। आप this आलेख में वर्णित डेटा एनोटेशन का उपयोग कर सकते हैं।

यहाँ एक उदाहरण है:

[Table("People")] 
public class Person 
{ 
    public int Id { get; set; } 

    [Column(TypeName = "varchar")] 
    public string Name { get; set; } 

    [Column(TypeName="date")] 
    public DateTime DOB { get; set; } 
} 

डिफ़ॉल्ट रूप से, स्ट्रिंग nvarchar लिए अनुवाद किया है, हम यहाँ है कि बदल गया है। इसके अलावा डेटाटाइम (यह वही है जो आपने मुझसे पूछा था) जो डिफ़ॉल्ट रूप से एसक्यूएल सर्वर में डेटाटाइम के लिए मानचित्र बदलता है, date में बदल जाता है जो केवल DateTime मान के समय हिस्से को संग्रहीत करता है।

-1

आपके कॉलम वर्तमान समय भाग के रूप में datetime होना चाहिए चाहते संग्रहीत करता जा रहा है को शामिल किया है आपके स्क्रीनशॉट में प्रदर्शित SQL सर्वर में कोई समय प्रदर्शित नहीं होगा यदि यह केवल date प्रकार कॉलम है। सी 0 में date टाइप नहीं है, बस DateTime है। लेकिन यह ठीक है, जब आप डीबी से तिथियों को पुनर्प्राप्त करते हैं तो समय के सभी भाग 00:00:00 होंगे। बस सुनिश्चित करें कि डीबी पर आपका कॉलम प्रकार "दिनांक" है और "डेटाटाइम" नहीं है।

alter table tableName alter column ExecutionDate date 

या दायाँ क्लिक करें, डिज़ाइनर, कॉलम प्रकार मैन्युअल रूप से बदलें। Date प्रकार

करने के लिए Datetime से डेटाबेस पर

-2

डेटाप्रकार बदलें यह वास्तव में एक मुद्दा आप के लिए वैसे भी है? आप कुछ बिंदु पर वहाँ में समय चाहते हो सकता है,

-1

के रूप में डेविड, ऊपर कहा एक बार आप लाने कि आवेदन में डेटा यह टाइमस्टैम्प तारीख पर जोड़े गए एक दिनांक समय हो जाएगा। यह एक ही परिणाम भी हो सकता है अगर आप एक स्ट्रिंग के रूप तारीख संग्रहीत और Convert वाली किसी भी हेरफेर के लिए दिनांक समय को बदलने के लिए:

string date = "2015-11-17"; 
var dateTime = Convert.ToDateTime(date); 

जब तक आप टाइमस्टैम्प से बचने के लिए अपने आवेदन में तार में हेरफेर करना चाहते हैं, आप कर सकते हैं केवल डेटटाइम के साथ काम करें। प्रदर्शन प्रयोजनों के लिए हालांकि, आप हमेशा दिनांक स्वरूप और टाइमस्टैम्प निकाल सकते हैं: DATETIME

var dateTime = DateTime.Now; 
var formatDate = dateTime.ToString("yyyy-MM-dd"); 
-1

बदलें डेटाबेस में NVARCHAR को (10) यदि u डेटाबेस 00.00.00 में datetime का उपयोग स्वचालित रूप से डेटाबेस

द्वारा आवंटित किया जाएगा
string date = DateTime.Today.ToShortDateString(); 
संबंधित मुद्दे