SELECT GETDATE()
返回时间:2008-09-22 15:24:13.790
我想要没有时间部分的日期部分:2008-09-22 00:00:00.000
我怎么能得到那个?
SELECT GETDATE()
返回时间:2008-09-22 15:24:13.790
我想要没有时间部分的日期部分:2008-09-22 00:00:00.000
我怎么能得到那个?
当前回答
日期(日期和时间字段)和Date_FORMAT(日期和日期,“%Y-%m-%d”)都只返回日期和时间的日期
其他回答
SELECT DATEADD(DD, DATEDIFF(DD, 0, GETDATE()), 0)
SELECT DATEADD(DAY, 0, DATEDIFF(DAY,0, GETDATE()))
SELECT CONVERT(DATETIME, CONVERT(VARCHAR(10), GETDATE(), 101))
编辑:前两个方法基本相同,out执行转换为varchar方法。
在SQL Server 2000上
CAST(
(
STR( YEAR( GETDATE() ) ) + '/' +
STR( MONTH( GETDATE() ) ) + '/' +
STR( DAY( GETDATE() ) )
)
AS DATETIME)
使用FLOOR()-只需削减时间部分。
SELECT CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)
哇,让我数一数你能做到这一点的方法。(无意双关)
为了以这种格式获得您想要的结果:
2008-09-22
这里有几个选项。
SELECT CAST(GETDATE() AS DATE) AS 'Date1'
SELECT Date2 = CONVERT(DATE, GETDATE())
SELECT CONVERT(DATE, GETDATE()) AS 'Date3'
SELECT CONVERT(CHAR(10), GETDATE(), 121) AS 'Date4'
SELECT CONVERT(CHAR(10), GETDATE(), 126) AS 'Date5'
SELECT CONVERT(CHAR(10), GETDATE(), 127) AS 'Date6'
所以,我建议你选择一个你满意的方法,并在所有的桌子上使用这种方法。
所有这些选项都以完全相同的格式返回日期。为什么SQL Server有这样的冗余?
我不知道,但他们知道。也许比我聪明的人可以回答这个问题。
希望这对某人有所帮助。
我赞成以下未提及的内容:
DATEFROMPARTS(DATEPART(yyyy, @mydatetime), DATEPART(mm, @mydatetime), DATEPART(dd, @mydatetime))
它也不关心本地或进行双重转换——尽管每个“datepart”可能都做数学运算。因此,它可能比datediff方法慢一点,但对我来说,它更清晰。尤其是当我想按年份和月份分组时(将日期设置为1)。