Where子句中的奇怪语法

时间:2010-08-12 14:37:24

标签: sql-server

以下是报告工具发送到我们数据库的查询的简化版本。我之前从未在Where子句中看到过这种语法。有人能告诉我括号在做什么吗?而且,我认为'd'可以作为约会对象?

Select
    ch.ContainerID, 
    ch.WorkItemHistoryEventTypeEnumID,
    ch.EventTime,
    ch.ContainerBinName,
    ch.WorkItemSerialNumber,
    ch.Closed
From Wip.vwContainerHistory ch
Where   
   ch.EventTime >= {d '2010-08-09'} 

2 个答案:

答案 0 :(得分:10)

请参阅MSDN datetime文章中的“日期时间支持的字符串文字格式”部分。

您的{d 'XXXX-XX-XX'}是ODBC日期时间格式。 ODBC时间戳转义序列的格式为:{ literal_type 'constant_value' }

literal_type指定转义序列的类型。时间戳有三个literal_type说明符:

  • d =仅限日期
  • t =仅限时间
  • ts =时间戳(时间+日期)

'constant_value'是转义序列的值。 constant_value必须遵循每个literal_type的这些格式。

d > yyyy-mm-dd  
t > hh:mm:ss[.fff]  
ts > yyyy-mm-dd hh:mm:ss[.fff]

答案 1 :(得分:3)

这是日期类型的ODBC转义序列。见http://msdn.microsoft.com/en-us/library/ms187819.aspx

  • d =仅限日期
  • t =仅限时间
  • ts =时间戳(时间+日期)