GETDATE() 函数从 SQL Server 返回当前的时间和日期。
SELECT GETDATE() AS CurrentDateTime
2008-12-29 16:25:46.635
DATEADD() 函数在日期中添加或减去指定的时间间隔。
date 参数是合法的日期表达式。number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。
datepart 缩写
年 yy, yyyy
月 mm, m
日 dd, d
小时 hh
分钟 mi, n
秒 ss, s
DATEDIFF() 函数返回两个日期之间的天数。
DATEDIFF(datepart,startdate,enddate)
想要获取两个日期之间的天数(请注意,第二个日期比第一个日期早,结果将是一个负数)。
SELECT DATEDIFF(day,'2008-08-05','2008-06-05') AS DiffDate
-61
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
使用指定的值替换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