Saya mencoba untuk menyimpan tanggal sekarang format waktu dari C# dan mengubahnya menjadi SQL Server format tanggal seperti jadi yyyy-MM-dd HH:mm:ss
sehingga saya dapat menggunakannya untuk UPDATE
query.
Ini adalah pertama saya kode:
DateTime myDateTime = DateTime.Now;
string sqlFormattedDate = myDateTime.Date.ToString("yyyy-MM-dd HH:mm:ss");
Output pada tanggal baik-baik saja, tapi waktu selalu "12:00:00" jadi saya mengubah kode berikut:
string sqlFormattedDate = myDateTime.Date.ToString("yyyy-MM-dd") + " " +
myDateTime.TimeOfDay.ToString("HH:mm:ss");
Itu memberi saya ini kesalahan kompilasi:
FormatException adalah tidak tertangani
Dan disarankan saya harus mengurai. Jadi saya mencoba melakukan ini untuk saya kode sesuai penelitian saya di sini di StackOverflow:
string sqlFormattedDate = myDateTime.Date.ToString("yyyy-MM-dd") + " " +
myDateTime.Parse.TimeOfDay.ToString("HH:mm:ss");
atau
string sqlFormattedDate = myDateTime.Date.ToString("yyyy-MM-dd") + " " +
myDateTime.tryParse.TimeOfDay.ToString("HH:mm:ss");
Tapi itu's mengatakan bahwa itu's sebuah metode yang tidak berlaku untuk konteks tertentu. Saya mencoba mencari solusi untuk masalah saya dan saya telah terjebak selama dua jam sekarang. I'm masih agak baru di C#, dapat anda membantu saya silahkan?
coba ini di bawah ini
DateTime myDateTime = DateTime.Now;
string sqlFormattedDate = myDateTime.ToString("yyyy-MM-dd HH:mm:ss.fff");
Menggunakan standar format datetime "s" juga akan memastikan internasionalisasi kompatibilitas (MM/dd terhadap dd/MM):
myDateTime.ToString("s");
=> 2013-12-31T00:00:00
Pilihan lengkap: (kode: sampel hasil)
d: 6/15/2008
D: Sunday, June 15, 2008
f: Sunday, June 15, 2008 9:15 PM
F: Sunday, June 15, 2008 9:15:07 PM
g: 6/15/2008 9:15 PM
G: 6/15/2008 9:15:07 PM
m: June 15
o: 2008-06-15T21:15:07.0000000
R: Sun, 15 Jun 2008 21:15:07 GMT
s: 2008-06-15T21:15:07
t: 9:15 PM
T: 9:15:07 PM
u: 2008-06-15 21:15:07Z
U: Monday, June 16, 2008 4:15:07 AM
y: June, 2008
'h:mm:ss.ff t': 9:15:07.00 P
'd MMM yyyy': 15 Jun 2008
'HH:mm:ss.f': 21:15:07.0
'dd MMM HH:mm:ss': 15 Jun 21:15:07
'\Mon\t\h\: M': Month: 6
'HH:mm:ss.ffffzzz': 21:15:07.0000-07:00
Didukung .NET Framework: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0
Referensi: [DateTime.ToString
Metode][1]
[1]: http://msdn.microsoft.com/en-us/library/zdtaw1bw(v=vs. 110).aspx
Jawaban yang sudah diberikan "menggunakan parameter". Format tanggal dan lewat itu sebagai string SQL-Server dapat menyebabkan kesalahan seperti itu tergantung pada cara pengaturan tanggal ditafsirkan pada sisi server. Di eropa, kita menulis '1.12.2012' untuk menunjukkan tanggal 1 desember 2012, sedangkan di negara-negara lain ini mungkin akan diperlakukan sebagai 12 januari.
Ketika mengeluarkan pernyataan langsung di SSMS saya menggunakan format yyyymmdd
yang tampaknya cukup umum. Saya tidak menemukan masalah pada berbagai instalasi yang saya kerjakan sejauh ini.
Ada yang lain jarang digunakan format, yang sedikit aneh tapi bekerja untuk semua versi:
select { d '2013-10-01' }
akan kembali pertama oktober 2013.
select { ts '2013-10-01 13:45:01' }
akan kembali november 1, 1:45:01 PM
Saya sangat menyarankan untuk menggunakan parameter dan tidak pernah format anda sendiri kode SQL dengan menempelkan bersama homegrown diformat pernyataan fragmen. Ini adalah sebuah entri untuk SQL injection dan aneh kesalahan (format nilai pecahan lain adalah potensi masalah)
Masalah anda di "Tanggal" properti yang memotong DateTime
untuk saat ini saja.
Anda bisa menempatkan konversi seperti ini:
DateTime myDateTime = DateTime.Now;
string sqlFormattedDate = myDateTime.ToString("yyyy-MM-dd HH:mm:ss"); // <- No Date.ToString()!
Jawaban yang saya cari adalah:
DateTime myDateTime = DateTime.Now;
string sqlFormattedDate = myDateTime.ToString("yyyy-MM-dd HH:mm:ss");
I've juga belajar bahwa anda dapat melakukannya dengan cara ini:
DateTime myDateTime = DateTime.Now;
string sqlFormattedDate = myDateTime.ToString(myCountryDateFormat);
di mana myCountryDateFormat dapat diubah untuk memenuhi berubah tergantung pada kebutuhan.
Harap dicatat bahwa tagged "pertanyaan Ini mungkin sudah punya jawaban berikut:" tidak benar-benar menjawab pertanyaan karena seperti yang anda lihat ini menggunakan ".Tanggal" bukan menghilangkan. It's cukup membingungkan bagi programmer baru dari .NET
Saya pikir masalahnya adalah dua tanda kutip tunggal yang hilang.
Ini adalah sql saya lari ke MSSMS:
WHERE checktime >= '2019-01-24 15:01:36.000' AND checktime <= '2019-01-25 16:01:36.000'
Seperti anda dapat melihat ada dua tanda kutip tunggal, sehingga kode anda harus:
string sqlFormattedDate = "'" + myDateTime.Date.ToString("yyyy-MM-dd") + " " + myDateTime.TimeOfDay.ToString("HH:mm:ss") + "'";
Menggunakan tanda kutip tunggal untuk setiap string di MSSQL atau MySQL. Saya harap ini membantu.
Masalah anda adalah di Upload
properti yang memotong DateTime
untuk saat ini saja. Anda bisa menempatkan konversi seperti ini:
DateTime myDateTime = DateTime.Now;
string sqlFormattedDate = myDateTime.ToString("yyyy-MM-dd HH:mm:ss");
Solusi lain untuk lulus DateTime dari C# dengan SQL Server, terlepas dari SQL Server pengaturan bahasa
seharusnya yang anda Pengaturan Regional menunjukkan tanggal dd.MM.yyyy (standar jerman '104') kemudian
DateTime myDateTime = DateTime.Now;
string sqlServerDate ="CONVERT("date,'"+myDateTime+"',104)";
melewati C# datetime variabel untuk SQL Server Tanggal jenis variabel, mengingat pemetaan sebagai per "104" aturan . Sql Server upload mendapat yyyy-MM-dd
Jika anda Regional Pengaturan tampilan DateTime berbeda, kemudian menggunakan pencocokan tepat dari SQL Server MENGKONVERSI Tabel
lihat lebih lanjut tentang Aturan: https://www.techonthenet.com/sql_server/functions/convert.php
Jika anda ingin memperbarui tabel dengan dateTime, anda dapat menggunakan sql string seperti contoh ini:
int fieldId;
DateTime myDateTime = DateTime.Now
string sql = string.Format(@"UPDATE TableName SET DateFieldName='{0}' WHERE FieldID={1}, myDateTime.ToString("yyyy-MM-dd HH:mm:ss"), fieldId.ToString());