合并仅在SQL Server中获取当前时间的字段

合并仅在SQL Server中获取当前时间的字段,sql,sql-server-2005,Sql,Sql Server 2005,对于SQLServer2005,如果此select返回null,如何将此语句与当前时间合并- select top 1 OrderDate as OldestOrderDate from ordersview ORDER BY OldestOrderDate OrderDate的类型为datettime。这就是您合并此语句的方式。: coalesce( (select top 1 OrderDate as OldestOrderDate from ordersview), get

对于SQLServer2005,如果此select返回null,如何将此语句与当前时间合并-

select top 1 OrderDate as OldestOrderDate 
from ordersview 
ORDER BY OldestOrderDate 

OrderDate的类型为datettime。

这就是您合并此语句的方式。:

coalesce(
  (select top 1 OrderDate as OldestOrderDate from ordersview),
  getDate());
如果您只需要时间部分:

coalesce(
  (select top 1 OrderDate as OldestOrderDate from ordersview),
  convert(varchar(10), getdate(), 8));
这是一个


但是如果我想把旧的estordate和getdate都转换成时间药剂,那我该怎么办呢巴兹


在这种情况下,请尝试。

这就是合并此语句的方法。:

coalesce(
  (select top 1 OrderDate as OldestOrderDate from ordersview),
  getDate());
如果您只需要时间部分:

coalesce(
  (select top 1 OrderDate as OldestOrderDate from ordersview),
  convert(varchar(10), getdate(), 8));
这是一个


但是如果我想把旧的estordate和getdate都转换成时间药剂,那我该怎么办呢巴兹

在这种情况下,请尝试。

尝试以下操作:

select top 1 coalesce(OrderDate, getdate()) as OldestOrderDate from ordersview
如果OrderDate不为空,则返回OrderDate,否则返回当前日期

从参数中返回第一个非空值。

请尝试以下操作:

select top 1 coalesce(OrderDate, getdate()) as OldestOrderDate from ordersview
SELECT OldestOrderDate = MAX(COALESCE(OrderDate, GETDATE()))
FROM (SELECT OrderDate = MAX(OrderDate) FROM dbo.ordersview UNION ALL SELECT NULL);
如果OrderDate不为空,则返回OrderDate,否则返回当前日期


返回其参数中的第一个非空值。

如果表为空,您将得不到任何内容如果表为空,您将得不到任何内容为什么您有
top 1
而没有
ORDER BY
?请不要告诉我您的视图是
选择100%的顶部。。。订购依据…
?PS如果您的视图中确实有
前100%。。。ORDER BY…
请将其删除并阅读以下内容(几天前我碰巧在博客上看到了这件事):别担心,我知道视图没有排序!谢谢。为什么您有
前1名
而没有
订购人
?请不要告诉我您的视图是
选择100%的顶部。。。订购依据…
?PS如果您的视图中确实有
前100%。。。ORDER BY…
请将其删除并阅读以下内容(几天前我碰巧在博客上看到了这件事):别担心,我知道视图没有排序!谢谢。但是如果我想把旧的EstorderDate和getdate都转换成时间药水,我该怎么办?但是如果我想把旧的EstorderDate和getdate都转换成时间药水,我该怎么办呢?啊,当我遇到这个问题时,我同意Mosty Mostacho的答案,但是转换成使用MAX()–事后看来,这是显而易见的!——这是非常优越的。但老实说,我没有那么复杂。为什么是派生表?为什么
联合所有人
<代码>合并(MAX(OrderDate),GETDATE())应该可以很好地工作。啊,当我遇到这个问题时,我按照Mosty Mostacho的答案,但是转换为使用MAX()——事后看来很明显这是非常优越的。但老实说,我没有那么复杂。为什么是派生表?为什么
联合所有人
<代码>合并(MAX(OrderDate),GETDATE())应该可以正常工作。
SELECT OldestOrderDate = MAX(COALESCE(OrderDate, GETDATE()))
FROM (SELECT OrderDate = MAX(OrderDate) FROM dbo.ordersview UNION ALL SELECT NULL);