diff --git a/src/backend/utils/adt/formatting.c b/src/backend/utils/adt/formatting.c
index 36353c3..d00b82c 100644
--- a/src/backend/utils/adt/formatting.c
+++ b/src/backend/utils/adt/formatting.c
@@ -2846,13 +2846,18 @@ DCH_from_char(FormatNode *node, char *in, TmFromChar *out)
 	{
 		if (n->type != NODE_TYPE_ACTION)
 		{
-			s++;
-			/* Ignore spaces when not in FX (fixed width) mode */
+			/*
+			 * Unless we're in fixed-width mode, upon encountering a space
+			 * in the format string, skip 0 or more whitespace characters
+			 * from the input string.
+			 */
 			if (isspace((unsigned char) n->character) && !fx_mode)
 			{
 				while (*s != '\0' && isspace((unsigned char) *s))
 					s++;
 			}
+			else
+				s++;		/* Otherwise, skip exactly one character. */
 			continue;
 		}
 
