Eugh ....
我有一个SQL表,其中包含一串以这种格式表示日期的字符串:dd/MM/yyyy HH:mm:ss
。
我需要找到最短的日期,并且非常希望在SQL中这样做,而不是将其拉入其他语言并在那里进行计算(例如C#)。
有关最简单方法的任何建议。
回答"不要以非标准字符串格式存储日期"是正确但没有帮助:(
答案 0 :(得分:4)
将CONVERT
与format-style 103:
SELECT
MIN(CONVERT(DATETIME, yourColumn, 103))
FROM yourTable
答案 1 :(得分:2)
您可以设置会话的日期格式,然后将列转换为日期时间。
set dateformat dmy
select min(convert(datetime, YourColumn))
from YourTable
以下是dateformat的文档。 https://docs.microsoft.com/en-us/sql/t-sql/statements/set-dateformat-transact-sql
答案 2 :(得分:0)
您可以使用DATETIMEFROMPARTS
函数然后使用miniumum
CREATE TABLE #DateString (
StringDate CHAR(19)
)
INSERT INTO #DateString
VALUES
('23/10/2017 10:22:10'),
('23/10/2017 10:23:10'),
('23/10/2017 10:26:10'),
('23/10/2017 10:25:10')
SELECT
MIN(DATETIMEFROMPARTS(
SUBSTRING(StringDate, 7,4),
SUBSTRING(StringDate, 4,2),
SUBSTRING(StringDate, 1,2),
SUBSTRING(StringDate, 12,2),
SUBSTRING(StringDate, 15,2),
SUBSTRING(StringDate, 18,2),
0
))
FROM
#DateString
答案 3 :(得分:0)
刚写了一个示例proc:
begin
DECLARE @Date varchar(25)
set @Date='23/10/2017 10:30:30'
SELECT CONVERT(datetime, @Date, 103)
end
O / P
DateTimeField
2017-10-23 10:30:30.000
答案 4 :(得分:-1)
将日期转换为数字形式,例如纪元或某个日期的差异,然后按相应的数值排序。