如何将datetime转换为字符串并在sql server中声明为参数?

时间:2012-06-26 04:35:54

标签: sql sql-server

我的桌子上有日期时间字段。我想转换成字符串并声明为参数。

例如,当datetime字段不为null时,'OPEN'和datetime字段为null然后'CLOSED',当我输入参数时,我想要输入'OPEN'或'CLOSED'然后结果将显示表

怎么做?。

2 个答案:

答案 0 :(得分:0)

我不太关注使用'参数'的问题,但希望这能为您提供所需的大部分内容。

SELECT CASE 
           WHEN [Date_Column] IS NULL THEN 'CLOSED'
           ELSE 'OPEN'
       END
FROM [Your_Table]

答案 1 :(得分:0)

这就是我理解你的问题的方法:你想要一个字符串参数的查询接受两个固定值,'OPEN''CLOSED',你想要一个匹配特定的非NULL值表中的datetime列,另一列匹配同一列的NULL值。而且您还希望相应地将该列的值显示为'OPEN''CLOSED'

如果这是正确的,您可以尝试以下方法:

DECLARE @QueryParam varchar(20);
SET @QueryParam = 'OPEN';

SELECT *
FROM (
  SELECT
    OpenOrClosed = CASE WHEN DateTimeColumn IS NULL THEN 'CLOSED' ELSE 'OPEN' END,
    other columns as necessary
  FROM yourtable
) s
WHERE OpenOrClosed = @QueryParam;

您可能还想考虑将子选择重写为视图:

CREATE VIEW YourTableView
AS
SELECT
  OpenOrClosed = CASE WHEN DateTimeColumn IS NULL THEN 'CLOSED' ELSE 'OPEN' END,
  other columns as necessary
FROM yourtable

然后你只需从该视图中选择:

DECLARE @QueryParam varchar(20);
SET @QueryParam = 'OPEN';

SELECT *
FROM YourTableView
WHERE OpenOrClosed = @QueryParam;