注:以下表達式中的0其實是表示日期1900-1-1
1.當天的零點
SELECT DATEADD(DAY,DATEDIFF(DAY,0,GETDATE()),0)
以上DATEDIFF(DAY,0,GETDATE())表示先計算當天與1900-1-1之間相關的天數,假設這裏記為N天,然後再通過DATEADD計算1900-1-1加上N天就得出當天的日期,時間為零點。
2.當月的第一天
SELECT DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0)
原理同上,只是計算單位由DAY變成MONTH。
3.當月的最後一天
SELECT DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE())+1,0)-1
原理是先計算出下個月的第一天,然後再減去一天。
4.今天是星期幾
SELECT DATENAME(WEEKDAY,GETDATE()) --輸出:星期五
5.今天是一周中的第幾天
SELECT DATEPART(DW,GETDATE()) --默認一周的開始是星期天,所以1表示星期天,7表示星期六
但是可以通過以下語句來改變這個默認值,如以下修改一周的第一天為星期一:
SET DATEFIRST 1
還可以通過以下語句查看當前的DATEFIRST的值:
SELECT @@DATEFIRST