SQL Server 2008 でクエリを実行しています。
SELECT
CONVERT(char(80), i.InvDate,3) AS InvDate,
i.InvoiceNo,
i.TaxAmount + i.SubTotal AS Amount,
'' AS Payment,
pd.GivenName
FROM
dbo.Invoice i
INNER JOIN dbo.PatientDetails pd ON (pd.MedicalRecordID = i.MedicalRecordID)
WHERE (InvDate >= CONVERT(datetime, '16/10/2012', 105)) AND
(InvDate <= CONVERT(datetime, '16/10/2012', 105))
出力:
それをC#に入れようとすると、「文字列から日付や時刻を変換するときに変換に失敗しました」と表示されます。
情報: 2012 年 10 月 16 日は、実行されることを確認するためにクエリに挿入しようとしたサンプルの日付です。これは古いプログラムです。そのため、文字列から変換しています。日時形式に関係があると確信しています。http://www.sqlusa.com/bestpractices/datetimeconversion/を見ました。しかし、私はそれに指を置くことはできません。
SqlCommand objCmd = new SqlCommand("SELECT CONVERT(char(80), i.InvDate,3)
AS InvDate,
i.InvoiceNo, i.TaxAmount + i.SubTotal AS Amount,'' AS Payment,pd.GivenName
FROM
dbo.Invoice i INNER JOIN dbo.PatientDetails pd
ON
(pd.MedicalRecordID = i.MedicalRecordID)
WHERE
(InvDate >= CONVERT(datetime, 'dd/MM/yyyy', 105))
AND
(InvDate <= CONVERT(datetime, 'dd/MM/yyyy', 105))", objConn);
SqlDataReader objReader;
objReader = objCmd.ExecuteReader();
System.IO.FileStream fs = new System.IO.FileStream("C:\\CMSExportedData\\Sales-" +
DateTime.Now.ToString("dd-MM-yyyy") + ".txt", System.IO.FileMode.Create);
System.IO.StreamWriter sw = new System.IO.StreamWriter(fs,
System.Text.Encoding.Default);