Access не имеет краткого формата даты, такого как SQL Server.См. эту ссылку для списков типов данных.
Доступ:
- Дата / Время, Использование для дат и времени, 8 байтов
SQL Server:
- datetime, с 1 января 1753 по 31 декабря 9999 с точностью 3,33миллисекунды, 8 байтов
- дата, хранить только дату.С 1 января 0001 года по 31 декабря 9999 года 3 байта
Таким образом, в Access есть только один тип даты / времени, который должен иметь возможность сохранять время с тем же номером.байтов как дата-время SQL Server.Дата без отметки времени, которую вы видите, на самом деле 12 часов утра.Это то, что вы делаете, когда устанавливаете дату / время на свой DateTimePicker Me.DateTimePicker1.Value = New Date(2019, 6, 18, 0, 0, 0, 0)
.Это, кстати, ваше лучшее решение - установить DateTimePicker на сегодняшнюю дату (только часть даты с использованием свойства DateTime.Date, которое я упомянул).
Чтобы решить вашу проблему, сделайте это в Form_Load
:
Me.DateTimePicker1.Value = Now.Date ' this makes it today at 12 AM
Если вы хотите лучше понять, что происходит, проверьте значение вашего DateTimePicker в любомвремя с этим, чтобы увидеть, что всегда есть время, даже если это 12:00:
MessageBox.Show($"{DateTimePicker1.Value:yyyy-MM-dd HH:mm:ss}")
И выполните этот запрос в вашей базе данных, чтобы увидеть, что в Access также всегда есть время Date/Time
поле, и этот доступ автоматически скрывает время, когда это 12:00:
select
orderdate
, format(orderdate, 'General Date') as GeneralDate
, format(orderdate, 'Short Time') as ShortTime
, format(orderdate, 'Medium Time') as MediumTime
, format(orderdate, 'Long Time') as LongTime
, format(orderdate, 'Short Date') as ShortDate
, format(orderdate, 'Medium Date') as MediumDate
, format(orderdate, 'Long Date') as LongDate
from orderdetails