Вычисления для дат и времени

 

Используя функции для дат, всегда следует помнить о датах, содержащих информацию о времени. (Напоминаю, все даты могут содержать данные о времени суток. Но, выбирая подходящий формат для поля с датами, вы сообщаете программе Access о том, нужно ли отображать временной компонент даты и разрешать пользователям вводить его, как объясняется в разд. "Дата/время " главы 2. Чаще всего вы будете пользоваться форматом, скрывающим любую информацию о времени суток.)

Проблема: функция Date ( ) возвращает текущую дату со значением времени суток, равным 0. Другими словами, если текущая дата — 4 июля 2008 г., то функция Date ( ) возвращает первую секунду 4 июля 2008 г. — момент, когда часы показывают полночь (12:00 a.m.)

Если вы не храните значения времени суток, эта проблема не важна, поскольку у всех ваших дат время суток равно 0. Но что произойдет, если вы используете Полный формат даты (см. табл. 2.3) в поле DueDate, разрешающий пользователям вводить и дату, и время. Теперь у условия отбора =<Date ( ) несколько иной смысл — вы сообщаете Access о необходимости отобрать, как совпадающие, все поля с датами, наступившими до первой секунды текущего дня. Это условие не выберет запись со сроком платежа, назначенным на 16:00 текущего дня.

В данной ситуации, возможно, нужно изменить условие отбора на следующее: <(Date()+l)

Date () +1 — это завтра. Другими словами, это условие отбирает любые записи со сроком платежа, истекшим до первой секунды завтрашнего дня.

Между прочим, у программы Access есть функция Now (), возвращающая текущую дату и время. Таким образом, следующее условие фильтрации отбирает все записи, соответствующие текущему моменту (текущего дня) или любому моменту времени во все предшествующие дни:

=<Now( )

 

Компоненты дат применяются в нескольких функциях обработки дат, включая функции DatePart ( ), DateAdd ( ) и DateDiff ( ). В табл. 7.6 приведены эти и дополнительные полезные функции, относящиеся к датам.

 

Таблица 7.6. Функции обработки дат

Глава 7. Основные хитрости, применяемые в запросах

 

253

Функция

Описание

Пример

Результат

Date ()

Получает текущую дату

Date ()

1/20/2006

Now ()

Получает текущую дату и время

Now ( )

1/20/2006 10:16:26 PM

DatePart ()

Извлекает часть даты (например, год, месяц или день в месяце)

DatePart(#1/20/ 2006#,    "d")

20

DateSerial()

Преобразует год, месяц и день в значение даты Access

DateSerial(2006, 5,    4)

5/4/2006

DateAdd ( )

Сдвигает дату на заданный интервал

DateAdd("yyyy", 2, #22/ll/2006#)

22/11/2008

DateDiff ( )

Определяет интервал между двумя датами

DateDiff("w", #10/l5/2006#, #l/ll/2007#)

12

MonthName ( )

Получает название, соответствующее номеру месяца (от 1 до 12)

MonthName (1)

"January"

WeekdayName ( )

Получает название, соответствующее номеру дня в неделе (от 1 до 7)

WeekdayName (1)

"Sunday"

Format ()

Преобразует дату в форматированный текст (используя любой формат даты, описанный в табл. 2.3)

Format(#27/04/ 2008#,    "Long Date")

"April 27, 2008"

 

 

Подсказка

У программы Access есть другие функции обработки дат, выполняющие часть алгоритма функции DatePart ( ). Примером может служить функция Month ( ), извлекающая номер месяца из даты. К другим аналогичным функциям относятся Year(), Day ( ), Hour ( ), Minute ( ) и Second ( ). Эти функции не дают никаких преимуществ, но вы можете встретить их в запросах других пользователей, применяющих их для получения аналогичных результатов.

 

 

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

1 комментарий »

 
  • Vitaly says:

    Здравствуйте! Подскажите по такому вопросу…
    Имею задание составить отчет по продажам за первый квартал с группировкой по месяцам. В конструкторе в области “Заголовок группы ‘Д_прд’ ” что мне нужно написать в свободном поле, чтобы отображался только месяц? Примерно так:
    Месяц: ЯНВАРЬ
    Товар1 …. продан: 08.01.2012
    Товар2 …. продан: 18.01.2012
    ————–
    Месяц: ФЕВРАЛЬ
    Товар1 …. продан: 08.02.2012
    Товар2 …. продан: 18.02.2012

    Заранее спасибо за помощь

 

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100