SFMC Support Answer
(for a Journey Builder Triggered Send);
During Send time
GetSendTime() = Current system time
GetSendTime(1) = Current system time
After a Send (VAWP)
GetSendTime() = Individual subscriber send completed time
GetSendTime(1) = Job publish time
For anyone that runs into this and maybe also for ampscript.guide. When you use GetSendTime(1) in combination of a journey the GetSendTime(1) will always reference the point when the journey was activated (not TRIGGERED). So if you activate a journey on the 24th of december 2019 GetSendTime(1) will always reference this date and not any future trigger times of the journey (for example if it triggered each month getsendtime(1) will still have the 24th of 2019 all the time.
This is no final answer but i wanted to shorten the question and this stuff is more like an answer.
Findings until now
AMPScript Guide documentation on GetSendDate has to be wrong:
A value of true returns the date and time the send completed for a
subscriber. A value of false returns the date and time the send
started. The default value is false if no value is specified NOTE: For
a Triggered Send (or Journey email) no value or false returns the time
the Triggered Send Definition was last published.
The value GetSendTime(1) delivers (for the send process on the 22nd) has to be before 21st 4PM, because of the interaction with SystemDateToLocalDate that adds another 8hours because of the timezone difference. This makes me seriously doubt GetSendTime(1), because salesforce and ampscript guide tell different things.
Narrowing down further
To narrow down further i created a journey that is going to send every hour. The journey includes one email that inherits Adam's AMPScript. To test every function i used i duplicated the script into four different versions.
Blocks
1
%%[
var @sendTimeNoArg, @sendTimeFalseArg, @sendTimeTrueArg
var @NowNoArg, @NowFalseArg, @NowTrueArg
set @sendTimeNoArg = GetSendTime()
set @sendTimeNoArg = format(@sendTimeNoArg,"yyyyMMddhhmmss")
set @sendTimeFalseArg = GetSendTime(0)
set @sendTimeFalseArg = format(@sendTimeFalseArg,"yyyyMMddhhmmss")
set @sendTimeTrueArg = GetSendTime(1)
set @sendTimeTrueArg = format(@sendTimeTrueArg,"yyyyMMddhhmmss")
set @NowNoArg = Now()
set @NowNoArg = format(@NowNoArg,"yyyyMMddhhmmss")
set @NowFalseArg = Now(0)
set @NowFalseArg = format(@NowFalseArg,"yyyyMMddhhmmss")
set @NowTrueArg = Now(1)
set @NowTrueArg = format(@NowTrueArg,"yyyyMMddhhmmss")
]%%
sendTimeNoArg: %%=v(@sendTimeNoArg)=%%
<br>sendTimeFalseArg: %%=v(@sendTimeFalseArg)=%%
<br>sendTimeTrueArg: %%=v(@sendTimeTrueArg)=%%
<br><br>
NowNoArg: %%=v(@NowNoArg)=%%
<br>NowFalseArg: %%=v(@NowFalseArg)=%%
<br>NowTrueArg: %%=v(@NowTrueArg)=%%
<br><br><br>
2 (added SystemDateToLocaleDate)
%%[
var @Transformed_sendTimeNoArg, @Transformed_sendTimeFalseArg, @Transformed_sendTimeTrueArg
var @Transformed_NowNoArg, @Transformed_NowFalseArg, @Transformed_NowTrueArg
set @Transformed_sendTimeNoArg = SystemDateToLocalDate(GetSendTime())
set @Transformed_sendTimeNoArg = format(@Transformed_sendTimeNoArg,"yyyyMMddhhmmss")
set @Transformed_sendTimeFalseArg = SystemDateToLocalDate(GetSendTime(0))
set @Transformed_sendTimeFalseArg = format(@Transformed_sendTimeFalseArg,"yyyyMMddhhmmss")
set @Transformed_sendTimeTrueArg = SystemDateToLocalDate(GetSendTime(1))
set @Transformed_sendTimeTrueArg = format(@Transformed_sendTimeTrueArg,"yyyyMMddhhmmss")
set @Transformed_NowNoArg = SystemDateToLocalDate(Now())
set @Transformed_NowNoArg = format(@Transformed_NowNoArg,"yyyyMMddhhmmss")
set @Transformed_NowTimeFalseArg = SystemDateToLocalDate(Now(0))
set @Transformed_NowTimeFalseArg = format(@Transformed_NowTimeFalseArg,"yyyyMMddhhmmss")
set @Transformed_NowTimeTrueArg = SystemDateToLocalDate(Now(1))
set @Transformed_NowTimeTrueArg = format(@Transformed_NowTimeTrueArg,"yyyyMMddhhmmss")
]%%
Transformed_sendTimeNoArg: %%=v(@Transformed_sendTimeNoArg)=%%
<br>Transformed_sendTimeFalseArg: %%=v(@Transformed_sendTimeFalseArg)=%%
<br>Transformed_sendTimeTrueArg: %%=v(@Transformed_sendTimeTrueArg)=%%
<br><br>
Transformed_NowNoArg: %%=v(@Transformed_NowNoArg)=%%
<br>Transformed_NowTimeFalseArg: %%=v(@Transformed_NowTimeFalseArg)=%%
<br>Transformed_NowTimeTrueArg: %%=v(@Transformed_NowTimeTrueArg)=%%
<br><br><br>
3 (added the addition part)
%%[
var @Transformed_sendTimeNoArg, @Transformed_sendTimeFalseArg, @Transformed_sendTimeTrueArg
var @Transformed_NowNoArg, @Transformed_NowFalseArg, @Transformed_NowTrueArg
set @Transformed_sendTimeNoArg = SystemDateToLocalDate(GetSendTime())
set @Transformed_sendTimeNoArg = format(@Transformed_sendTimeNoArg,"yyyyMMddhhmmss")
set @Transformed_sendTimeFalseArg = SystemDateToLocalDate(GetSendTime(0))
set @Transformed_sendTimeFalseArg = format(@Transformed_sendTimeFalseArg,"yyyyMMddhhmmss")
set @Transformed_sendTimeTrueArg = SystemDateToLocalDate(GetSendTime(1))
set @Transformed_sendTimeTrueArg = format(@Transformed_sendTimeTrueArg,"yyyyMMddhhmmss")
set @Transformed_NowNoArg = SystemDateToLocalDate(Now())
set @Transformed_NowNoArg = format(@Transformed_NowNoArg,"yyyyMMddhhmmss")
set @Transformed_NowTimeFalseArg = SystemDateToLocalDate(Now(0))
set @Transformed_NowTimeFalseArg = format(@Transformed_NowTimeFalseArg,"yyyyMMddhhmmss")
set @Transformed_NowTimeTrueArg = SystemDateToLocalDate(Now(1))
set @Transformed_NowTimeTrueArg = format(@Transformed_NowTimeTrueArg,"yyyyMMddhhmmss")
]%%
Transformed_sendTimeNoArg: %%=v(@Transformed_sendTimeNoArg)=%%
<br>Transformed_sendTimeFalseArg: %%=v(@Transformed_sendTimeFalseArg)=%%
<br>Transformed_sendTimeTrueArg: %%=v(@Transformed_sendTimeTrueArg)=%%
<br><br>
Transformed_NowNoArg: %%=v(@Transformed_NowNoArg)=%%
<br>Transformed_NowTimeFalseArg: %%=v(@Transformed_NowTimeFalseArg)=%%
<br>Transformed_NowTimeTrueArg: %%=v(@Transformed_NowTimeTrueArg)=%%
<br><br><br>
4 (added FormatDate with locale)
%%[
var @German_sendTimeNoArg, @German_sendTimeFalseArg, @German_sendTimeTrueArg
var @German_NowNoArg, @German_NowFalseArg, @German_NowTrueArg
set @German_sendTimeNoArg = SystemDateToLocalDate(DateAdd(GetSendTime(),'7','D'))
set @German_sendTimeNoArg = FormatDate(@German_sendTimeNoArg,"d. MMMM YYYY",, "de_DE")
set @German_sendTimeFalseArg = SystemDateToLocalDate(DateAdd(GetSendTime(0),'7','D'))
set @German_sendTimeFalseArg =FormatDate(@German_sendTimeFalseArg,"d. MMMM YYYY",, "de_DE")
set @German_sendTimeTrueArg = SystemDateToLocalDate(DateAdd(GetSendTime(1),'7','D'))
set @German_sendTimeTrueArg = FormatDate(@German_sendTimeTrueArg,"d. MMMM YYYY",, "de_DE")
set @German_NowNoArg = SystemDateToLocalDate(DateAdd(Now(),'7','D'))
set @German_NowNoArg = FormatDate(@German_NowNoArg,"d. MMMM YYYY",, "de_DE")
set @German_NowTimeFalseArg = SystemDateToLocalDate(DateAdd(Now(0),'7','D'))
set @German_NowTimeFalseArg = FormatDate(@German_NowTimeFalseArg,"d. MMMM YYYY",, "de_DE")
set @German_NowTimeTrueArg = SystemDateToLocalDate(DateAdd(Now(1),'7','D'))
set @German_NowTimeTrueArg = FormatDate(@German_NowTimeTrueArg,"d. MMMM YYYY",, "de_DE")
]%%
German_sendTimeNoArg: %%=v(@German_sendTimeNoArg)=%%
<br>German_sendTimeFalseArg: %%=v(@German_sendTimeFalseArg)=%%
<br>German_sendTimeTrueArg: %%=v(@German_sendTimeTrueArg)=%%
<br><br>
German_NowNoArg: %%=v(@German_NowNoArg)=%%
<br>German_NowTimeFalseArg: %%=v(@German_NowTimeFalseArg)=%%
<br>German_NowTimeTrueArg: %%=v(@German_NowTimeTrueArg)=%%
Email Preview
Dates are correct.
Email send
Dates are correct and show the same value
JourneySend on 22nd 11:03PM (CEST) - 22nd 3:03PM (CST)
Dates are correct and show the same value
When entering the View as WebPage on the 23rd around 8:40AM (CEST) it shows the image below
JourneySend on 23rd 8:06AM (CEST) - 23rd 12:06 AM (CST)
Dates are correct and show the same value
When entering the View as WebPage on the 23rd around 8:40AM (CEST) it shows the image below
Creating a new Journey that is triggered by SQL automation
... to be continued ...
Ressources
A value of true returns the date and time the send completed for a subscriber
; Salesforce Documentation says:GetSendTime(1) - Job publish time
.