2016-04-08 15 views
-1

DateTime'ı MySQL db'ye girmemde çok büyük bir sorun yaşıyorum. MySQL, datetime yi yyyy-AA-gg olarak okur HH: mm: ss, C# datetime tarihini gg/aa/yyyy olarak görür HH: mm: ss. İki farklı örneği denedim ve ikisi de işe yaramıyor.DateTime'ı MySQL'e C# ile nasıl girilir? #

//I Have two examples that doesn't work. 
var myDateTime = "2016-04-08 12:00:00" //this gives the error "cannot covert source 'string' to tartget type System.DateTime 

var myDateTime = Convert.ToDateTime("2016-04-08 12:00:00") //this gives the error "Input string was not in a correct format." 

var model = new DateAndTime 
{ 
    DateTime = myDateTime 
}; 

MODEL

public class DateAndTime 
{ 
    public DateTime DateTime { get; set; } 
} 

KONTROL yüzden sıkıştım. Dışarıda birileri bu konu olduğundan eminim.

+1

SQL ifadenizi nasıl yaratıyorsunuz? Parametreler kullanırsanız, biçimlendirme hakkında endişelenmenize gerek kalmaz. – juharr

+0

@juharr - DateAndTime tablosundaki DateTime sütunu, yyyy-MM-dd olarak bir MySQL db dosyasındadır HH: mm: ss. Ben db yazmak için nHibernate kullanıyorum ama bu hata ile henüz o kadar alamıyorum. – NeoSketo

+0

Yani "DateTime" yerine DB varchar 'dır? 'DateTime' belirli bir formata sahip olmadığından, aslında sadece sayısal bir değerdir. SQL deyimleriyle kullanılan biçim, yalnızca bir insanın bunu anlayabilmesi için bunu yapmaktır. – juharr

cevap

0
DateTime myDate = DateTime.ParseExact("2009-05-08 14:40:52,531", "yyyy-MM-dd HH:mm:ss,fff", 
             System.Globalization.CultureInfo.InvariantCulture); 

Kontrol:

Converting a String to DateTime

https://msdn.microsoft.com/en-ca/library/cc165448.aspx

https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx

+0

bunu kullanarak: var myDateTime = "2016-04-08 14:18:17" ve DateTime.ParseExact (myDateTime, "yyyy-AA-gg HH: dd: ss", System.Globalization.CultureInfo.InvariantCulture) i hata "Giriş dizesi doğru biçimde değil." Belki de yanlış AM/PM nedeniyle yanlıştır? – NeoSketo

+0

bu iyi. yanlış formatta dönüştürüyordu. THANKS I – NeoSketo

0

bu deneyin:

myDateTime.ToString("yyyy-MM-dd HH:mm:ss"); 

myDateTime değişkeninin DateTime tipi olması gerekir.

veya bu MySql işlevi kullanabilirsiniz: STR_TO_DATE

STR_TO_DATE('4/8/2016 2:18:17 PM', '%m/%d/%Y %h:%i:%s %p') 

Specifier Format here

+0

bunu kullanarak hala bana "System.DateTime tartget türüne" annot örtülü kaynak "dizesi hatası verir" – NeoSketo

+0

myDateTime değişkeni DateTime türünde olmalıdır ": Convert.ToDateTime (myDateTime) .ToString (" yyyy-MM-dd HH: dd: ss "); –

+1

evet. DateTime myDateTime = {4/8/2016 2:18:17 PM} olduğunda bu hatayı alıyorum. – NeoSketo

0

Ben bu sorunu var çünkü benim makinede datetime biçimi. Masaüstünüz dd/aa/yy (/ sembol yerine -) gibi yapılandırılmışsa, değiştirmeli/dönüştürmeden önce değiştirmeniz gerekir. Lütfen bana bildirin

+0

Makine şovlarım dd/mm/yyyy ancak sonuç önemli değil çünkü sonuç yyyy-MM-dd HH: mm: ss yazmak zorundadır. – NeoSketo

İlgili konular