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

Преобразовать string в smalldatetime

30.10.2012, 06:16. Показов 2868. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пользователь должен выбирать только месяц и год, следовательно от DateTimePicker отказываюсь и делаю 2 comboBox - один с перечислением месяцев, другой с годами.

Собираю все в кучу:

C#
1
string period = String.Concat(month_string, ".", date, ".", year);
Добавляю параметр:
C#
1
command.Parameters.Add("@doc_period", SqlDbType.SmallDateTime, 4).Value = period;
Появляется ошибка при записи в БД:

Syntax error converting character string to smalldatetime data type.
В чем загвоздка?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.10.2012, 06:16
Ответы с готовыми решениями:

Нельзя преобразовать тип Tuple<string,string,string,string> к string
Здравствуйте, у меня возникла проблема. При запуске кода, вылезает ошибка &quot;Нельзя преобразовать тип...

Как преобразовать char* в string и вывести переменную string на экран?
for (int k = 0; k &lt; 10; k++) { int x = (int)rand() / RAND_MAX + rand() % 6 + 2; char *chars = new char; ...

Преобразовать вводимое string в нужное string[]
Господа, подскажите, пожалуйста: есть класс, который работает с массивом и еще со всякой мелочью, в классе есть поток, который записывает...

11
7 / 7 / 8
Регистрация: 11.04.2012
Сообщений: 87
30.10.2012, 06:32
C#
1
2
DateTime dt = Convert.ToDateTime(period);
command.Parameters.Add("@doc_period", SqlDbType.SmallDateTime, 4).Value = dt;
0
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 44
30.10.2012, 06:39  [ТС]
ToN.FiER, забыл написать, что писал так:

C#
1
command.Parameters.Add("@doc_period", SqlDbType.SmallDateTime, 4).Value = Convert.ToDateTime(period);
ошибка та же
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
30.10.2012, 06:45
При преобразовании строки в дату и наоборот, всегда указывайте формат в котором дата записана.
Про существующие форматы можно прочитать тут - http://msdn.microsoft.com/ru-r... 3ddd4.aspx

Из кода непонятно, в каком виде у вас дата записана. Вот пример для стандартного дд.мм.гггг:
C#
1
2
DateTime docPeriod = DateTime.Parse(period, "dd.MM.yyyy");
command.Parameters.Add("@doc_period", SqlDbType.SmallDateTime, 4).Value = docPeriod;
0
7 / 7 / 8
Регистрация: 11.04.2012
Сообщений: 87
30.10.2012, 06:47
И даже так?
C#
1
2
3
DateTime dt = Convert.ToDateTime(period);
OdbcParameter par = new OdbcParameter("@doc_period", SqlDbType.SmallDateTime);
par.Value = dt;
0
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 44
30.10.2012, 07:03  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
Вот пример для стандартного дд.мм.гггг:
Получается: The best overloaded method match for 'System.DateTime.Parse(string, System.IFormatProvider)' has some invalid arguments

Добавлено через 4 минуты
Цитата Сообщение от ToN.FiER Посмотреть сообщение
И даже так?
Я не использую odbc
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
30.10.2012, 07:04
Да, действительно. Используйте ParseExact:
C#
1
DateTime docPeriod = DateTime.ParseExact(period, "dd.MM.yyyy", CultureInfo.InvariantCulture);
У вас дата в формате дд.мм.гггг?
0
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 44
30.10.2012, 07:17  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
У вас дата в формате дд.мм.гггг?
да, именно.

На всякий случай, может кому-то пригодится:
чтобы использовать CultureInfo, нужно подключить: using System.Globalization;

turbanoff, ParseExact как-то странно конвертировал строку 1.7.2012 в 01.01.0001 0:00:00 и видимо из-за этого ошибка:
String was not recognized as a valid DateTime.
Добавлено через 1 минуту
может быть у меня косяк?

C#
1
2
3
4
5
6
7
            string date = "1";
            int month_int = comboBox1.SelectedIndex;
            if (month_int >= 0)
                month_int++;
            string month_string = Convert.ToString(month_int);
            string year = comboBox3.Text;
            string period = String.Concat(date, ".", month_string, ".", year);
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
30.10.2012, 07:19
Цитата Сообщение от na1anya Посмотреть сообщение
да, именно.
То есть переменная, которая содержит день у вас называется month_string, а месяц - date?

Цитата Сообщение от na1anya Посмотреть сообщение
1.7.2012
Попробуйте так:
C#
1
DateTime.ParseExact(period, "d.M.yyyy", CultureInfo.InvariantCulture);
PS. Необязательно преобразовывать сначала все в строку, у DateTime есть куча других конструкторов, например такой:
C#
1
DateTime docPeriod = new DateTime(1, 7, 2012);
1
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 44
30.10.2012, 07:27  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
То есть переменная, которая содержит день у вас называется month_string, а месяц - date?
Ну почему? В date хранится число, а в month_string хранится месяц.

Цитата Сообщение от turbanoff Посмотреть сообщение
Попробуйте так:
Код C#
1
DateTime.ParseExact(period, "d.M.yyyy", CultureInfo.InvariantCulture);
теперь записалось и конвертировалось все правильно - {01.07.2012 0:00:00}

теперь при записе в бд:
Syntax error converting character string to smalldatetime data type.
я чувствую что зря выбрал этот smalldatetime, головной боли не оберешься..
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
30.10.2012, 07:31
У вас либо строка запроса не правильная (с кавычками для того столбца).
Либо вы не то значение для параметра задаете. Необходимо чтобы значение было типа DateTime, а не string.

Добавлено через 24 секунды
Цитата Сообщение от na1anya Посмотреть сообщение
В date хранится число
не самое подходящее имя для хранения дня.
1
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 44
30.10.2012, 07:40  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
не самое подходящее имя для хранения дня.
Согласен, не подумав сделал.


Цитата Сообщение от turbanoff Посмотреть сообщение
У вас либо строка запроса не правильная (с кавычками для того столбца).
Спасибо, вначале в запросе без параметра число писал вручную, чтобы проверить, потом параметр вписал и про кавычки забыл..

Все работает!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.10.2012, 07:40
Помогаю со студенческими работами здесь

Не удается неявно преобразовать string в string[]
Пишет, что не удается не удается неявно преобразовать тип string в string Надо считать строки с текстовика, предварительно они там...

Как преобразовать тип System::String ^ в string? (или что можно сделать ещё для работы перегруженного оператора ostream::operator<<)
Друзья! В обработчик события Click добавил такой код: std::ofstream file_out (&quot;file.txt&quot;); file_out&lt;&lt;...

Преобразовать ArrayList<String[]> в []String
Имеется private static ArrayList&lt;String&gt; ResultSets; А так же private static String str; Пишем str = new String; str =...

Как преобразовать string[] в string
второй день изучаю C#, так что вопрос скорее всего заезженный нужно, чтобы при выборе нескольких файлов, все пути к файлам выводились...

Можно ли тип Collection<String> преобразовать в тип ArrayList<String>?
Добрый день ! Можно ли тип Collection&lt;String&gt; преобразовать в тип ArrayList&lt;String&gt; Collection&lt;String&gt; l4 = map.values(); ...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru