Я работаю с базой данных доступа и vb6. В моей таблице есть поле с именем «InvoiceDate», которое является текстовым полем. Мне не разрешено вносить изменения в базу данных. Поэтому я думаю, что мой единственный вариант - это изменить текстовое поле на поле даты / времени в моем запросе. Я нашел несколько способов сделать это. Они следующие.
- Формат (InvoiceDate, "гггг / мм / дд")
- (DateSerial (левый (InvoiceDate, 4), Mid (InvoiceDate, 5,2), Right (InvoiceDate, 2))
Между # 2015/01/01 # и # 2016/01/01 #))
- DateValue (InvoiceDate, "гггг / мм / дд")
- CDate (InvoiceDate, "гггг / мм / дд")
Но эти 4 метода не сработали. Я не могу понять это.
Я использую следующий запрос
SELECT Invoice.InvoiceDate, InvoicedProduct.InvoiceType, Invoice.InvoiceStatus,
Invoice.RetailerID, Invoice.DailySalesID, Invoice.RepID,
InvoicedProduct.Quantity, InvoicedProduct.UnitRate,
InvoicedProduct.TotalItemValue
FROM Invoice
INNER JOIN InvoicedProduct
ON (Invoice.DailySalesID = InvoicedProduct.DailySalesID)
AND (Invoice.RepID = InvoicedProduct.RepID)
AND (Invoice.InvoiceID = InvoicedProduct.InvoiceID)
WHERE (((InvoicedProduct.ProductID)='9010001174130.4')
AND (DateValue(Invoice.InvoiceDate) Between #2015/01/01# And #2016/01/01#))
GROUP BY Invoice.InvoiceDate, InvoicedProduct.InvoiceType, Invoice.InvoiceStatus,
Invoice.RetailerID, Invoice.DailySalesID, Invoice.RepID,
InvoicedProduct.Quantity, InvoicedProduct.UnitRate,
InvoicedProduct.TotalItemValue
HAVING (((InvoicedProduct.InvoiceType)='Invoice' OR (InvoicedProduct.InvoiceType)='Sound')
AND ((Invoice.InvoiceStatus)='VALID'))
ORDER BY Invoice.InvoiceDate;
Это дает мне ошибку "Несоответствие типов данных в выражении критериев"
следующие два типа включены в мое поле InvoiceDate
2016/01/04 10:00: AM и 2016/01/20 20:25
Единственная разница - двоеточие после времени
Пожалуйста, помогите.
Спасибо.