我将发布一个简单的例子:
SELECT " CAST(t.PurchaseDate AS DATE) AS PurchaseDate
FROM SomeTable t
ORDER BT PurchaseDate
如何确保ORDER BY将使用PurchaseDate(仅限DATE部分),而不是PurchaseDate表字段?
我知道我可以将CAST结果命名为PurchaseDate2(或其他),但我不认为这是一个非常直观的解决方案。
SELECT " CAST(t.PurchaseDate AS DATE) AS PurchaseDate2
FROM SomeTable t
ORDER BT PurchaseDate2
我也可以再次使用CAST:
ORDER BY CAST(t.PurchaseDate AS DATE)
但我想知道我是否可以避免双CAST?
任何想法如果我们(并且我们可以)在ORDER BY中引用结果字段而不是表字段,当它们具有相同的名称时,我们怎么样?
答案 0 :(得分:0)
您可以使用下面的CONVERT()
功能,只能获得DATE部分
SELECT CONVERT(date, t.PurchaseDate) AS PurchaseDate
FROM SomeTable t
ORDER BT PurchaseDate
首先,您应该将别名更改为不同的实际列名。像NewPurchaseDate
这样的东西。不确定为什么要保持它与实际列名相同。
第二,您可以执行以下操作,而不是使用column alias
使用order by
中的实际转化处理
SELECT CONVERT(date, t.PurchaseDate) AS PurchaseDate
FROM SomeTable t
ORDER BY CONVERT(date, t.PurchaseDate)
答案 1 :(得分:0)
''的语法除了....它不是解决方案,因为order by子句使用表列名,而不是语句别名。如果您正在寻找具体的内容:
SELECT " PurchaseDate
FROM (
SELECT " CAST(t.PurchaseDate AS DATE) AS PurchaseDate
FROM SomeTable t
) AnotherTable
ORDER BT PurchaseDate
答案 2 :(得分:0)
没有PurchaseDate2的丑陋因素
SELECT CAST(t.PurchaseDate AS DATE) AS [Purchase Date]
FROM SomeTable t
ORDER BY [Purchase Date]