我收到了这个声明:
Select Format((
Select Max([Date])
from BusinessDaysCalendar
where [date] in (
Select top 1 [date]
from BusinessDaysCalendar
where date > CURRENT_TIMESTAMP
)
),'MM/dd/yyyy', 'en-US') [retval]
以此格式08/22/2014
我想使用Select CONVERT
来获取格式为Aug 22, 2014
的日期。我知道如何使用这个语句来获得我需要的东西
SELECT CONVERT(VARCHAR(12), GETDATE(), 107)
我只是很难将它与第一个语句集成在一起。
非常感谢任何帮助。感谢。
答案 0 :(得分:0)
我认为你只需要用第一个语句替换“GETDATE()”。所以:
SELECT CONVERT(VARCHAR(12),
(Select
Max([Date])
from BusinessDaysCalendar
where [date] in
(Select
top 1 [date]
from BusinessDaysCalendar
where date > CURRENT_TIMESTAMP)
),107)
答案 1 :(得分:0)
感谢您的回复,但正如我正在努力的那样,我遇到了解决方案:
Select convert(varchar(12),(
select (
Select Max([Date])
from BusinessDaysCalendar
where [date] in (
Select top 1 [date]
from BusinessDaysCalendar
where date > CURRENT_TIMESTAMP))),107) [retval]
这给了我2014年8月22日我正在寻找的价值。感谢。
答案 2 :(得分:0)
我将您的查询重新格式化为更易读的内容 - 我的意思是更容易确定给定语句的哪一部分,例如转换函数的参数在哪里,以及哪些行是每个子查询的一部分。
我还包括第二个版本,我认为它正在完成你想要的东西,但有点简单,因为它跳过了1个子查询级别。我的理解是你试图在当前日期之后的最低日期返回一行。最内部子查询的问题在于,如果没有Order By,则无法保证返回的行将是最低值。 Top 1只是告诉它返回它遇到的第一行,并且它可能不是符合您标准的最低值。
Select convert(varchar(12)
,( --this is the 2nd argument for the 'convert' function
select (
Select Max([Date]) --determine the Max (Date) **It looks like you're trying to get the first value after today, and ensure you're only returning 1 row
from BusinessDaysCalendar
where [date]
in (--select the 1st date ** note: since this subquery is only returning a single row, you can use "=" instead of "in"
Select top 1 [date]
from BusinessDaysCalendar
where date > CURRENT_TIMESTAMP)
)
)
,107 --the 3rd argument for 'convert'
) [retval]
Select convert(varchar(12)
,( --this is the 2nd argument for the 'convert' function
select (
Select min([Date]) --determine the Max (Date) **It looks like you're trying to get the first value after today, and ensure you're only returning 1 row
from BusinessDaysCalendar
where date > CURRENT_TIMESTAMP
)
)
,107 --the 3rd argument for 'convert'
) [retval]