SQL қай жерде бір-бірден кемінде бір секунд болатын екі күннің ережелері?

Кестеде екі уақытша бағаным бар және бірінші бағаннан екіншісіне дейінгі айырмашылық бір айдан бір секунд қысқа болатын жолдарды дәл таңдағым келеді. Мысалы, 2011 жылы datetimes уақытында осы жолдарды (және басқаларын) таңдамайды:

col1                col2
2011-01-01 00:00:00 2011-01-31 23:59:59
2011-02-01 00:00:00 2011-02-28 23:59:59
2011-03-01 00:00:00 2011-03-31 23:59:59
2011-04-01 00:00:00 2011-04-30 23:59:59
2011-05-01 00:00:00 2011-05-31 23:59:59
2011-06-01 00:00:00 2011-06-30 23:59:59
2011-07-01 00:00:00 2011-07-31 23:59:59
2011-08-01 00:00:00 2011-08-31 23:59:59
2011-09-01 00:00:00 2011-09-30 23:59:59
2011-10-01 00:00:00 2011-10-31 23:59:59
2011-11-01 00:00:00 2011-11-30 23:59:59
2011-12-01 00:00:00 2011-12-31 23:59:59

Дегенмен, 2012 жылы таңдау, мысалы, жылжу жылын есепке алу керек еді.

Мұндай өтінішті қалай жазуға болады?

1

1 жауаптар

SELECT *
FROM Table
WHERE col2 = DATEADD(second, -1, (DATEADD(Month, 1 Col1)))
-- check for either direction
OR col1 = DATEADD(second, -1, (DATEADD(Month, 1 Col2)))

Бұл: «бағанның2 (бір айдан артық және бір секунд аз) болатын жолдарды маған col1-ға қарағанда көрсетіңіз.»

SQL Server бағдарламасындағы кірістірілген логикалық логика автоматты түрде жылжу жылдары сияқты заттарды қамтиды.

3
қосылды
+1 ОС-ның салыстырудың екі жолмен жұмыс істеуін, мысалы, кез-келген бағытта айырмашылықты ескеруін ескеріңіз.
қосылды автор RedFilter, көзі
@RedFilter - жақсы нүкте, мен оны қосамын.
қосылды автор JNK, көзі