sqlserver:日期函数用法

GETDATE()

GETDATE() 函数从 SQL Server 返回当前的时间和日期。

SELECT GETDATE() AS CurrentDateTime
2008-12-29 16:25:46.635

DATEADD()

DATEADD() 函数在日期中添加或减去指定的时间间隔。

DATEADD(datepart,number,date)

date 参数是合法的日期表达式。number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。

datepart        缩写
年              yy, yyyy
月              mm, m
日              dd, d
小时            hh
分钟            mi, n
秒             ss, s

DATEDIFF()

DATEDIFF() 函数返回两个日期之间的天数。
DATEDIFF(datepart,startdate,enddate)
想要获取两个日期之间的天数(请注意,第二个日期比第一个日期早,结果将是一个负数)。

SELECT DATEDIFF(day,'2008-08-05','2008-06-05') AS DiffDate
-61

convert()函数

CONVERT() 函数是把日期转换为新数据类型的通用函数
CONVERT() 函数可以用不同的格式显示日期/时间数据。
SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm

Select CONVERT(varchar(100), GETDATE(), 120)
2006-05-16 10:57:49
Style ID	Style 格式
100 或者 0	mon dd yyyy hh:miAM (或者 PM)
101	mm/dd/yy
102	yy.mm.dd
103	dd/mm/yy
104	dd.mm.yy
105	dd-mm-yy
106	dd mon yy
107	Mon dd, yy
108	hh:mm:ss
109 或者 9	mon dd yyyy hh:mi:ss:mmmAM(或者 PM)
110	mm-dd-yy
111	yy/mm/dd
112	yymmdd
113 或者 13	dd mon yyyy hh:mm:ss:mmm(24h)
114	hh:mi:ss:mmm(24h)
120 或者 20	yyyy-mm-dd hh:mi:ss(24h)
121 或者 21	yyyy-mm-dd hh:mi:ss.mmm(24h)
126	yyyy-mm-ddThh:mm:ss.mmm(没有空格)
130	dd mon yyyy hh:mi:ss:mmmAM
131	dd/mm/yy hh:mi:ss:mmmAM

实例:

select convert(char(10),getdate(),120)
2020-03-04

select dateadd(hh,7,convert(char(10),getdate(),120))
2020-03-04 07:00:00

select dateadd(hh,7,convert(char(10),getdate(),120))-1
2020-03-03 07:00:00


select * from IOTDAQ.dbo.AAC_MTF_LOT_BASE_INFO
where createtime > dateadd(hh,7,convert(char(10),getdate(),120))-1
and CREATETIME < dateadd(hh,7,convert(char(10),getdate(),120))

例子:

if datediff(mi,RIGHT(CONVERT(CHAR(19),GETDATE(),120),8),'19:00:00')>0
BEGIN
	SELECT
	LOT_NO, LOT_NAME, LENS_SETTINGS, OPERRATOR_NAME, LOGIN_DATE, LOGIN_TIME, BATCH_DATE, NAME1
	, NAME2, NAME3, OPTICAL_SETUP, PITHCH, MAX_FREQUENCY, OPTIMISE_AF, AF_REF_CURVE, EFL_NOMINAL, EFL_MIN
	, EFL_MAX, EFL_USED_MTF, EFL_USED_AF, FLANGE_REF_POS, DOF_CAMERAS, RETICLE_NAME, RETICLE_SETUP
	, SERIAL_NO, SOFTWARE_VER, MEAS_NBR, CAMERA_NO, MACHINE_NO
	, CREATEDATE, CREATETIME, AOI1, AOI2, TAN1, H_DISTANCE
	FROM AAC_MTF_LOT_BASE_INFO
	where LOT_NO IN
	(
	select LOT_NO from AAC_MTF_LOT_BASE_INFO
	where createtime > dateadd(hh,-5,convert(char(10),getdate(),120))
	and CREATETIME < dateadd(hh,7,convert(char(10),getdate(),120))
	)
END
ELSE
BEGIN
	SELECT
	LOT_NO, LOT_NAME, LENS_SETTINGS, OPERRATOR_NAME, LOGIN_DATE, LOGIN_TIME, BATCH_DATE, NAME1
	, NAME2, NAME3, OPTICAL_SETUP, PITHCH, MAX_FREQUENCY, OPTIMISE_AF, AF_REF_CURVE, EFL_NOMINAL, EFL_MIN
	, EFL_MAX, EFL_USED_MTF, EFL_USED_AF, FLANGE_REF_POS, DOF_CAMERAS, RETICLE_NAME, RETICLE_SETUP
	, SERIAL_NO, SOFTWARE_VER, MEAS_NBR, CAMERA_NO, MACHINE_NO
	, CREATEDATE, CREATETIME, AOI1, AOI2, TAN1, H_DISTANCE
	FROM AAC_MTF_LOT_BASE_INFO
	where LOT_NO IN
	(
	select LOT_NO from AAC_MTF_LOT_BASE_INFO
	where createtime > dateadd(hh,7,convert(char(10),getdate(),120))
	and CREATETIME < dateadd(hh,19,convert(char(10),getdate(),120))
	)
END

ISNULL()函数

使用指定的值替换NULL
语法:ISNULL(check_expression,replacement_value),check_expression将被检查是否为NULL的表达式。check_expression可以是任何类型的。replacement_value在check_expression为NULL时将返回的表达式。replacement_value必须与check_expression具有相同的类型。

select isnull(convert(varchar(30),max(tb56_collect_time),120),'2020-03-19 15:03:02') from [temp56]

2020-04-02 09:02:54

你可能感兴趣的:(数据库)