Member 13100277 Ответов: 3

Проблема с SQL и датой


Hello.
I have a problem with the format of the date which is stored in SQL server. It should send the date as 'dd-MM-yyyy' but when I look in the 'Table Data' it shows like 'mm-DD-yyyy 00:00:00' and I can't figure out why.

My code for sending information to SQL is:
<pre lang="c#"> MessageBox.Show((DateTime.Parse(datoForbrug.Value.ToShortDateString())).ToString("dd-MM-yyyy"));


cmd.CommandText = "insert into " + Forbrug + " (Dato, Aflæsning, Forskel) VALUES ('" + (DateTime.Parse(datoForbrug.Value.ToShortDateString())).ToString("dd-MM-yyyy") + "', '" + IndtastForbrug.Text + "','" + 0 + "')";


Когда я должен получить данные из SQL, код:
Gridview_index.Rows [n].Cells [0].Value = String.Format("{0:dd-MM-yyyy}", item [1].ToString());


Что я уже пробовал:

Все: от изменения формата в dateTimePicker до формата от отправки информации в SQL, в SQL и получения от SQL. Поиск в интернете тоже.

3 Ответов

Рейтинг:
28

Maciej Los

Цитата:
Он должен отправить дату как 'dd-MM-yyyy- но когда я смотрю в "табличные данные", это выглядит так :mm-DD-yyyy 00:00:00- и я не могу понять почему.


Формат даты зависит от локализации сервера sqk и параметров сортировки базы данных. Пожалуйста, смотрите: Международные соображения для SQL Server[^Обычно тип данных date (datetime) содержит части даты и времени. Проверить это: Типы данных (Transact-SQL) | Microsoft Docs[^] чтобы выяснить, почему.

В зависимости от того, чего вы пытаетесь достичь, вы можете измениться datetime тип данных в date.


Member 13100277

Спасибо. Я уже все понял :-)

Рейтинг:
2

Patrice T

Никогда не создавайте SQL-запрос путем конкатенации с пользовательскими вводами, он называется "SQL-инъекция", он опасен для вашей базы данных и подвержен ошибкам.
Одна кавычка в имени - и ваша программа рухнет. Если пользовательский ввод типа "Брайан О'Коннер" может привести к сбою вашего приложения, то это уязвимость SQL-инъекции.
SQL-инъекция-Википедия[^]
SQL-инъекция[^]


Рейтинг:
1

Member 13100277

Из скрипта в SQL:

INSERT INTO [dbo].[Elforbrug] ([Id], [Dato], [Aflæsning], [Forskel]) VALUES (71, N'2017-02-04 00:00:00', 10, 0)
INSERT INTO [dbo].[Elforbrug] ([Id], [Dato], [Aflæsning], [Forskel]) VALUES (72, N'2017-02-04 00:00:00', 12, 0)