Ну, одну вещь, которую вы могли бы сделать, это изменить свой запрос так, чтобы он совпадал только с именем пользователя. Затем в коде вы проверяете пароль и срок действия, возвращая соответствующие ошибки.
Кроме того, я надеюсь, что ваш пример запроса является упрощением; Конечно, вы должны защищать / шифровать / хэшировать свои пароли, и вы должны включить что-то, что ограничивает количество неудачных попыток в течение определенного периода времени и т. Д.
Что касается вашего фактического вопроса (в отличие от результатов, которые вы ищете), нет способа получить эту информацию из предложения where. Самое близкое, что вы могли бы сделать, было бы что-то вроде:
SELECT *,
CASE WHEN Password = 'asdf' THEN 1 ELSE 0 END AS IsPasswordMatch,
CASE WHEN Expiration >= NOW() THEN 1 ELSE 0 END AS IsActiveAccount
FROM Users
WHERE Username = 'user'