There are several considerations regarding dates.
First, you want to be sure that the appropriate indexes are used. In general, this means that you are not executing functions in a column. This applies to data types other than dates, but acts as predominant for understanding dates. Therefore, CONVERT () is a bad idea in terms of performance, assuming the column is indexed.
Secondly, you want to avoid unnecessary conversions between formats. Thus, a function call must be made for each line. Instead, converting a constant string to a date / time occurs once at compile time. The first one is less effective. Another reason to avoid CONVERT (). However, in many queries, other processing (such as merging) is much more time consuming than conversions, so this may not be important.
As for the choice between “between” and signed transactions. Best practice is to use "<" and ">" and "> =" and "<=". This makes the logic clearer for dates and has no problem with things like seconds accurate to 3 ms.
As far as I know, between dates works just as efficiently using indexes as other types of fields. However, for accuracy and portability it is best to conduct individual comparisons.
So, the third version will be preferable.
source share