Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
0 / 0 / 1
Регистрация: 24.05.2016
Сообщений: 21

Трабл с преобразованием datetime в string

01.05.2017, 19:05. Показов 4804. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Имеется БД в SQL Server, пытаюсь написать виндовс приложение в Visual studio. Собственно, столкнулся с такой проблемой: при вызове хранимой процедуры возникает ошибка указанная на скриншоте ниже, а конкретнее - что то не так я делаю с датапикером, пробовал менять формат отображения даты, пробовал конвертировать из datetime в string и наоборот, все равно не работает, поясните что не так делаю? И, если можно, как выполнить этот синтаксический разбор строки, на который указывает ошибка, гуглил - ничего не понял

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
private void button1_Click(object sender, EventArgs e)
        {
            Insert(int.Parse(comboBox1.Text), int.Parse(comboBox2.Text), int.Parse(comboBox3.Text), Convert.ToString(dateTimePicker1.Text),
                    textBox1.Text, int.Parse(comboBox4.Text), textBox2.Text, int.Parse(comboBox5.Text));
        }
        private bool Insert(int Код_ФЛ, int Код_ЮЛ, int Код_Тарифа, string Дата_Подключения, string Адрес_подключения,
                            int Кол_Услуги, string Продолжительность_мес, int Код_Оборудования)
        {
            bool result = false;
            using (SqlConnection con = new SqlConnection("Data Source = MAKS; Initial Catalog = GreenDot; Integrated Security = True"))
            {
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = con;
                cmd.CommandText = "Создание договора ФЛ";
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Clear();
                cmd.Parameters.AddWithValue("@Код_ФЛ", Код_ФЛ);
                cmd.Parameters.AddWithValue("@Код_ЮЛ", Код_ЮЛ);
                cmd.Parameters.AddWithValue("@Код_Тарифа", Код_Тарифа);
                cmd.Parameters.AddWithValue("@Дата_Подключения", Дата_Подключения);
                cmd.Parameters.AddWithValue("@Адрес_подключения", Адрес_подключения);
                cmd.Parameters.AddWithValue("@Кол_Услуги", Кол_Услуги);
                cmd.Parameters.AddWithValue("@Продолжительность_мес", Продолжительность_мес);
                cmd.Parameters.AddWithValue("@Код_Оборудования", Код_Оборудования);
 
                try
                {
                    MessageBox.Show("Договор создан");
                    Close();
                    con.Open();
                    if (cmd.ExecuteNonQuery() == 1)
                    {
                        result = true;
 
                    }
                }
                catch { }
                return result;
 
            }
        }
Миниатюры
Трабл с преобразованием datetime в string  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.05.2017, 19:05
Ответы с готовыми решениями:

Неправильно читает в string значение DATETIME
Здраствуйте, есть БД MySQL в которой в колонке date есть запись 2015-05-28 19:44:15. Когда я с С# читаю запись, то мне в переменную...

Не удается перевести string date в DateTime
Добрый день! Подскажите пожалуйста, почему не получается перевести строку формата dd.mm.yyyy HH.mm.ss например "10.10.2009...

Не удается преобразовать тип String в System.DateTime
string ss = ""; if (radioButton1.Checked == true) { ss = "Бессрочно"; } ...

10
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18288 / 14211 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
01.05.2017, 21:46
TheMakZJ, попробуй сделать что написано в исключении - привести строку к дате
C#
1
cmd.Parameters.AddWithValue("@Дата_Подключения", DateTime.Parse(Дата_Подключения));
Хотя наверное лучше чтобы метод Insert уже принимал DateTime.
1
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
01.05.2017, 22:24
TheMakZJ, DateTimePicker.Value сразу возвращает дату без двойных преобразований.
1
0 / 0 / 1
Регистрация: 24.05.2016
Сообщений: 21
01.05.2017, 22:59  [ТС]
OwenGlendower, Попробовал как Вы сказали, все равно та же ошибка

Добавлено через 38 секунд
Igr_ok, Да, этот момент я знаю, но вообще без преобразований так же выдает данную ошибку
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18288 / 14211 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
01.05.2017, 23:21
TheMakZJ, раз не помогло, то попробуй такой формат для даты
C#
1
ToString(@"yyyy-MM-dd HH\:mm\:ss")
1
0 / 0 / 1
Регистрация: 24.05.2016
Сообщений: 21
02.05.2017, 00:04  [ТС]
OwenGlendower, Переписал код немного по-другому, поменял тип данных для "Дата_Подключения"(иначе компилятор ругался на перегруженный метод string), и добавил то, что вы посоветовали:ToString(@"yyyy-MM-dd HH\:mm\:ss") в строку с вызовом даты... Иии... Тем не менее, все равно просит синтаксически разобрать строку...

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
private void button1_Click(object sender, EventArgs e)
        {
           
            Insert(int.Parse(comboBox1.Text), int.Parse(comboBox2.Text), int.Parse(comboBox3.Text), dateTimePicker1.Value,
                    textBox1.Text, int.Parse(comboBox4.Text), textBox2.Text, int.Parse(comboBox5.Text));
        }
        private bool Insert(int Код_ФЛ, int Код_ЮЛ, int Код_Тарифа, DateTime Дата_Подключения, string Адрес_подключения,
                            int Кол_Услуги, string Продолжительность_мес, int Код_Оборудования)
        {
            
            bool result = false;
            using (SqlConnection con = new SqlConnection("Data Source = MAKS; Initial Catalog = GreenDot; Integrated Security = True"))
            {
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = con;
                cmd.CommandText = "Создание договора ФЛ";
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Clear();
                cmd.Parameters.AddWithValue("@Код_ФЛ", Код_ФЛ);
                cmd.Parameters.AddWithValue("@Код_ЮЛ", Код_ЮЛ);
                cmd.Parameters.AddWithValue("@Код_Тарифа", Код_Тарифа);
                cmd.Parameters.AddWithValue("@Дата_Подключения", Дата_Подключения.ToString("yyyy-MM-dd"));
                cmd.Parameters.AddWithValue("@Адрес_подключения", Адрес_подключения);
                cmd.Parameters.AddWithValue("@Код_Услуги", Кол_Услуги);
                cmd.Parameters.AddWithValue("@Продолжительность_мес", Продолжительность_мес);
                cmd.Parameters.AddWithValue("@Код_Оборудования", Код_Оборудования);
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18288 / 14211 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
02.05.2017, 00:10
TheMakZJ, какой тип параметра @Дата_Подключения у хранимой процедуры? Даже давай лучше покажи типы всех параметров.
1
0 / 0 / 1
Регистрация: 24.05.2016
Сообщений: 21
02.05.2017, 00:19  [ТС]
OwenGlendower, Имеете ввиду тип данных параметров ХП? Если да, то, собственно, покажу саму ХП:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE PROCEDURE [dbo].[Создание договора ФЛ]
 (
 @Код_ФЛ INT,
 @Код_ЮЛ INT,
 @Код_Тарифа INT,
 @Дата_Подключения DATE,
 @Адрес_подключения VARCHAR(100),
 @Код_Услуги INT,
 @Продолжительность_мес SMALLINT,
 @Код_Оборудования INT
 )
AS
BEGIN
    SET NOCOUNT ON;
    INSERT INTO dbo.Договор
    VALUES (@Код_ФЛ, @Код_ЮЛ, @Код_Тарифа ,@Дата_Подключения,@Адрес_подключения,@Код_Услуги,
             @Продолжительность_мес, @Код_Оборудования)
END
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18288 / 14211 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
03.05.2017, 01:21
TheMakZJ, типы колонок в таблице соответствуют типам параметров хранимой процедуры? Порядок колонок в INSERT соответствует порядку колонок в таблице? Триггеров на таблице Договор случайно нет? Процедура работает без ошибок если её вызвать из Management Studio? Если нет, то сначала нужно добиться что вызов работал в SSMS, а потом уже переходить к шарпу. На стороне кода единственное что еще можно попробовать это явно указать типы всех параметров:
C#
1
2
3
4
5
cmd.Parameters.AddValue("@Код_ФЛ", SqlDbType.Int).Value = Код_ФЛ;
...
cmd.Parameters.AddWithValue("@Дата_Подключения", SqlDbType.Date).Value = Дата_Подключения;
cmd.Parameters.AddWithValue("@Адрес_подключения", SqlDbType.VarChar, 100).Value = Адрес_подключения;
...
Если и это всё не поможет, то нужно брать профайлер и смотреть что происходит при вызове процедуры.
1
0 / 0 / 1
Регистрация: 24.05.2016
Сообщений: 21
03.05.2017, 02:54  [ТС]
OwenGlendower, Таакс, типы колонок в таблице соответствуют типам параметров ХП, в INSERT тоже все по порядку, триггеров не имеется, в SSMS все работает как надо, со стороны кода попробовал явно указать типы всех параметров, как посоветовали - все равно ругается. С профайлером ни разу не работал, открыл, посмотрел, ничего не понял закрыл)) ну да ладно, все равно спасибо, буду как-нибудь разбираться)
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
03.05.2017, 09:18
C#
1
Console.WriteLine(DateTime.Now.ToString("yyyyMMdd"));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.05.2017, 09:18
Помогаю со студенческими работами здесь

Преобразование String в DateTime для записи в базу данных
Добрый день, проблема с преобразованием формата String в DataTime Имеется БД Access (в Visual Studio 2015) со столбцами...

Несоответствие формата даты System.DateTime и DATETIME в SQL Express Edition
Столкнулся с такой проблемой: В System.DateTime дата пишется в формате дд.мм.гггг чч.мм.сс, а DATETIME в SQL Express Edition хочет получать...

Невозможно выполнить операцию "Like" над System.DateTime и System.String
Всем привет. проблема такая: У меня есть база на postgresql, в ней есть 6 столбцов, из которых по некоторым есть фильтрация. есть столбец с...

Почему DateTime.ToString("yyyy/M/d") ms sql принимает как DateTime?
Доброго времени суток. Я только только начал изучать С# и MS Sql. Подскажите пожалуйста почему DateTime.ToString("yyyy/M/d") в...

Из string в DateTime - Exception "String was not recognized as a valid DateTime"
У меня в базе данных есть записи такого рода: 2016-8-4 0:01:13 Как можно конвертировать обратно в DateTime в C#? Мои попытки: while...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru