我有下表列:UPDATE_TIME
我有这个查询:
SELECT TOP 1 FORMAT([UPDATE_TIME], 'M/d/yyyy h:mm tt') AS UPDATE_TIME FROM table ORDER BY UPDATE_TIME DESC
它应该生成最新日期:
2019/2/10下午4:23
而是生成:
我做了一些调试,发现AS
是这里的麻烦制造者
不带AS的查询
SELECT TOP 1 FORMAT([UPDATE_TIME], 'M/d/yyyy h:mm tt') FROM table ORDER BY UPDATE_TIME DESC;
结果是正确的最近时间
但是您可以看到它省略了列名,因为format属性使用了它,这就是为什么需要AS的原因。
如何确保AS始终获得最新结果?
答案 0 :(得分:2)
因为您要用别名隐藏原始列,所以要按月先进行字典排序(并且格式在前几位都没有填充前导零,这使得即使在一个月之内也可以“正确”排序)
要按基表列而不是格式化的字符串结果排序,请使用两部分命名。
SELECT TOP 1 FORMAT([UPDATE_TIME], 'M/d/yyyy h:mm tt') as UPDATE_TIME
FROM [table] t
ORDER BY t.UPDATE_TIME DESC;
答案 1 :(得分:1)
鉴于您的明显要求(获取最新日期),您能否获取MAX日期?
SELECT FORMAT(MAX([UPDATE_TIME]), 'M/d/yyyy h:mm tt') AS UPDATE_TIME
FROM table
它不能回答您有关“ AS”为何有所不同的问题,但可以解决您的问题。