Khabibb Mubarakk Ответов: 1

Как сохранить datetime в базе данных access


как сохранить datetime в access в формате "dd/MM/yyyy hh:mm:ss"?
я пытаюсь использовать этот формат, но пропускаю день и месяц ..
в моей базе данных access используется формат " dd/mm/yyyy hh:nn:ss "
поэтому я использую такой формат и не промахиваюсь ..

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

dim actdate = DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss")

и используя метод сохранения :
cmd.parameters.Add(New OleDbParameter("letdate", CType(actdate, Date)))

PIEBALDconsult

Не используйте строку для дат. Даты не имеют формата, пока вы их не отобразите.

Khabibb Mubarakk

вот так просто?

 actdate = DateTime.Now 

PIEBALDconsult

Да, лучше.

Khabibb Mubarakk

несоответствие братан

1 Ответов

Рейтинг:
1

OriginalGriff

Подобный этому:

Dim actDate as DateTime = DateTime.Now
cmd.parameters.AddWithValue("letdate", sctDate)


Khabibb Mubarakk

это сделать несоответствие критериям !

OriginalGriff

Тогда вы пытаетесь хранить даты в виде строк, что очень плохая идея - она всегда возвращается, чтобы укусить вас позже.
Измените свою базу данных таким образом, чтобы элементы хранились в соответствующих типах данных: целые числа в INT, плавающая точка в FLOAT, деньги в десятичной системе счисления и даты в Столбцах DATE, DATETIME или DATETIME2. Только строковые данные в столбцы varchar или nvarchar.

Khabibb Mubarakk

я не буду хранить дату в виде строки..
именно я установил БД в соответствующий тип данных.
но когда я пытаюсь сохранить с помощью date. now или datetime.now, то получаю сообщение о несоответствии критериям..

OriginalGriff

Покажите точный код, который вы используете, и ваш дизайн таблицы.

Khabibb Mubarakk

это точный мой код, как вы хотите
letdate на доступ к базе данных, используя тип данных датавремя..

call koneksi()
sql = "insert into cube([no],[letdate])" & " "values(?,?)"
cmd = New OleDbCommand(sql, conn)
dim actdate as datetime = DateTime.Now
With cmd.Parameters
    .Add(New OleDbParameter("@no", CType(serno.Text, Integer)))        
    .Add(New OleDbParameter("@letdate", CType(actdate, Date)))
End With
cmd.ExecuteNonQuery()
cmd.Dispose()
conn.Close() 

OriginalGriff

Есть ли смысл говорить вам, что делать, если вы игнорируете его, а затем жалуетесь, что он не работает?

Khabibb Mubarakk

какой ?
вот этот

Dim actDate as DateTime = DateTime.Now
cmd.parameters.AddWithValue("letdate", sctDate)

прежде чем комментировать несоответствие я попробовал сначала
тогда я говорю это дайте мне несоответствующее сообщение

OriginalGriff

Должно быть, "actDate", а не" sctDate " - проблема с пальцем на моем конце.

Khabibb Mubarakk

я знаю, что вы хотите именно "actdate" ..
поэтому я пытаюсь использовать "acdate"
как бы то ни было ... я все еще путаю, почему не могу сохранить datetime.now..
Я использую Скрыть   скопировать код

  dim actdate as datetime = datetime.now.tostring("MM/dd/yyyy HH:mm:ss") 

это будет сохранение правильной даты доступа ..
я думаю, что, возможно, я должен следовать общему формату доступа.

OriginalGriff

Нет, не будет.

Это струна. Не отправляйте его в виде строки; Не храните его в виде строки.
Отправьте его как DateTime, как в моем примере; сохраните его как столбец DATE, DATETIME или DATETIME2.

Никогда не превращайте вещи без необходимости...

Khabibb Mubarakk

но как? если я найду правильный метод хранения с помощью datetime, то теперь я буду использовать его..

я посылаю как строку
так для чего же это объявлено "dim actdate as datetime"?
тогда в моей БД все еще используется datetime datatype..
может, как-нибудь устроим конфлик?
я думаю, что все это выглядит Оке..

OriginalGriff

Давайте вернемся к самому началу...
Используйте Access, чтобы сгенерировать сценарий для определения таблицы и опубликовать его.

Khabibb Mubarakk

как использовать Access для создания скрипта для определения таблицы ?

OriginalGriff

Извините, я забыл, насколько примитивен доступ ... Я использую SSMS.

Идти сюда:
https://www.pcworld.com/article/168319/MDB_Viewer_Plus.html
А скачать EXE-файл-это безопасно и очень удобно.
Запустите приложение и откройте файл MDB.
Воспользуйтесь меню " таблица "и выберите пункт"Generate SQL - CREATE".
Это откроет окно с командой CREATE TABLE для создания вашей таблицы.

Khabibb Mubarakk

да, letdate использует datetime.

OriginalGriff

Покажите созданную им команду CREATE TABLE.

Khabibb Mubarakk

CREATE TABLE [CUBE] 
(   [NO] SMALLINT,
   [LETDATE] DATETIME 

)

OriginalGriff

Итак, код, который я показал, должен работать нормально - он передает значение DATETIME напрямую, а ваша таблица является столбцом DATETIME, так что это должно работать. Так... логически, это не LETDATE, который вызывает проблему. Посмотрите на нет - это небольшое число, поэтому самое большое число, которое оно может содержать, - это 32767, максимальное положительное значение в 16-битном числе. Но Integer в .NET - это 32-битное число, которое может содержать гораздо бОльшие значения. Какое значение, по словам отладчика, находится в serno.Текст, когда вы передадите это? Не гадайте и не предполагайте-используйте отладчик и смотрите!

Khabibb Mubarakk

Я думаю, что пропущу формат даты.. я пытаюсь просто сохранить дату. теперь в letdate .я все еще получаю несоответствие msg

PIEBALDconsult

Не храните даты в виде строк. Когда-либо.