Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 转换为mm/dd/yyyy并选择最大值_Sql Server - Fatal编程技术网

Sql server 转换为mm/dd/yyyy并选择最大值

Sql server 转换为mm/dd/yyyy并选择最大值,sql-server,Sql Server,使用SQL Server 2014,我有一个名为LAST_BASELINE_UPDATE_date的日期字段,该字段存储为datetime 我使用CONVERT函数转换为mm/dd/yyyy: 我希望能够做到的是,在不创建表的情况下选择基线更新日期的最大值。这有可能吗?从你的帖子上看,你的数据是什么,你想从中得到什么,这有点不清楚。这里有几个解决方案,希望其中一个是适用的 假设您希望结果是格式为mm/dd/yyyy的字符串,您可以这样做 select convert(varchar(10), m

使用SQL Server 2014,我有一个名为LAST_BASELINE_UPDATE_date的日期字段,该字段存储为datetime

我使用CONVERT函数转换为mm/dd/yyyy:


我希望能够做到的是,在不创建表的情况下选择基线更新日期的最大值。这有可能吗?

从你的帖子上看,你的数据是什么,你想从中得到什么,这有点不清楚。这里有几个解决方案,希望其中一个是适用的

假设您希望结果是格式为mm/dd/yyyy的字符串,您可以这样做

select convert(varchar(10), max(LAST_BASELINE_UPDATE_DATE), 101))
from YourTable
如果你只是想约会,就这么做吧

select max(LAST_BASELINE_UPDATE_DATE)
from YourTable
如果LAST_BASELINE_UPDATE_DATE已经是一个字符串格式的mm/dd/yyyy,并且您希望它作为日期

select max(convert(date, LAST_BASELINE_UPDATE_DATE, 101))
from YourTable

从你的帖子中可以看出,你的数据是什么,你想得到什么,这有点不清楚。这里有几个解决方案,希望其中一个是适用的

假设您希望结果是格式为mm/dd/yyyy的字符串,您可以这样做

select convert(varchar(10), max(LAST_BASELINE_UPDATE_DATE), 101))
from YourTable
如果你只是想约会,就这么做吧

select max(LAST_BASELINE_UPDATE_DATE)
from YourTable
如果LAST_BASELINE_UPDATE_DATE已经是一个字符串格式的mm/dd/yyyy,并且您希望它作为日期

select max(convert(date, LAST_BASELINE_UPDATE_DATE, 101))
from YourTable

我认为你把这件事复杂化了。只需对最大日期时间值进行转换

declare @table table (LAST_BASELINE_UPDATE_DATE datetime)
insert into @table
values
('20160701 12:21'),
('20160705 03:21'),
('20160401 19:21'),
('20161201 04:21')

select
    convert(varchar(10),max(LAST_BASELINE_UPDATE_DATE),101)
from
    @table

此方法转换返回的单个行,即datetime列的最大值,而不是转换每一行,然后查找最大值。

我认为这会使问题复杂化。只需对最大日期时间值进行转换

declare @table table (LAST_BASELINE_UPDATE_DATE datetime)
insert into @table
values
('20160701 12:21'),
('20160705 03:21'),
('20160401 19:21'),
('20161201 04:21')

select
    convert(varchar(10),max(LAST_BASELINE_UPDATE_DATE),101)
from
    @table

此方法转换返回的单个行,即datetime列的最大值,而不是转换每一行然后查找最大值。

为什么要将其转换为字符串,然后查找最大值?如果它存储为DATETIME,只需执行MAXLAST\u BASELINE\u UPDATE\u DATE。当然,只需将其包装为maxIf not convert,则我将获取每条记录,而不是最大值。转换与获取每条记录或最大值无关。将聚合数据的是max函数。@请显示准确的、完整的,正在使用的查询。为什么要将其转换为字符串,然后查找最大值?如果它存储为DATETIME,只需执行MAXLAST\u BASELINE\u UPDATE\u DATE。当然,只需将其包装为maxIf not convert,则我将获取每条记录,而不是最大值。转换与获取每条记录或最大值无关。将聚合数据的是max函数。@请显示准确的、完整的,您正在使用的查询。看起来很简单,但这些选项都不起作用,可能是数据的实际存储方式。如果我将数据存储在临时表中,然后使用select LAST\u BASELINE\u UPDATE\u DATE=从临时表中选择MAXLAST\u BASELINE\u UPDATE\u DATE,则它可以正常工作。只是想弄明白为什么我必须在max正常工作之前将数据存储在临时表中。@如果数据类型是datetime,那么我的解决方案就可以工作了。我提供了一个样品。您是否将其存储为varchar?看起来很简单,但这些选项都不起作用,可能是数据的实际存储方式。如果我将数据存储在临时表中,然后使用select LAST\u BASELINE\u UPDATE\u DATE=从临时表中选择MAXLAST\u BASELINE\u UPDATE\u DATE,则它可以正常工作。只是想弄明白为什么我必须在max正常工作之前将数据存储在临时表中。@如果数据类型是datetime,那么我的解决方案就可以工作了。我提供了一个样品。您是否将其存储为varchar?在进一步挖掘之后,我看到上一次\u基线\u更新\u日期的属性是datetime,长度是8,但数字精度是23。我猜这就是MAX没有像我预期的那样工作的原因。经过进一步挖掘,我看到了LAST_BASELINE_UPDATE_DATE的属性是datetime,长度是8,但数字精度是23。我猜这就是为什么MAX没有像我预期的那样工作。