如何从datetime中删除时间

时间:2013-01-11 14:09:20

标签: sql date reporting-services

数据库中的字段DATE具有以下格式:

2012-11-12 00:00:00

我想从日期中删除时间并返回日期,如下所示:

11/12/2012

10 个答案:

答案 0 :(得分:58)

首先,如果您的日期采用varchar格式更改,store dates as dates它会为您节省很多麻烦,而且最好是尽早完成。这个问题只会变得更糟。

其次,一旦你有一个日期不要将日期转换为varchar!保持日期格式并在应用程序端使用格式以获取所需的日期格式。

根据您的DBMS,有多种方法可以执行此操作:


SQL-Server 2008 及更高版本:

SELECT  CAST(CURRENT_TIMESTAMP AS DATE)

SQL-Server 2005 及早期

SELECT  DATEADD(DAY, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP), 0)

<强> SQLite的

SELECT  DATE(NOW())

<强>的Oracle

SELECT  TRUNC(CURRENT_TIMESTAMP)

<强> PostgreSQL的

SELECT  CURRENT_TIMESTAMP::DATE

如果您需要在报告中使用特定于文化的格式,您可以明确说明接收文本框的格式(例如dd / MM / yyyy),也可以设置语言以便显示相关的日期格式那种语言。

无论哪种方式,这都可以在SQL之外更好地处理,因为在SQL中转换为varchar会影响您在报表中执行的任何排序。

如果您不能/不会将数据类型更改为DATETIME,那么在发送到报表服务并按上述方法处理之前,仍然会将其转换为SQL中的日期(例如CONVERT(DATETIME, yourField))。

答案 1 :(得分:8)

只需使用,( in TSQL

SELECT convert(varchar, columnName, 101)
MySQL

中的

SELECT DATE_FORMAT(columnName, '%m/%d/%Y')

答案 2 :(得分:3)

就个人而言,我会返回完整的本机日期时间值,并在客户端代码中对其进行格式化。

这样,您可以使用用户的语言环境设置为该用户提供正确的含义。

“11/12”含糊不清。是吗:

  • 11月12日
  • 12月11日

答案 3 :(得分:3)

我发现这种方法非常有用。但是它会将您的日期/时间格式转换为日期,但从来没有为我所需要的工作做更少的工作。 (我只需要在报告上显示日期,时间无关紧要)。

CAST(start_date AS DATE)

更新

(请记住我是实习生;​​))

如果您使用SSRS,我认为这样做更容易。

实际更改字段位于报表中的文本框属性更容易。右键单击字段&gt;数字&gt;日期并选择适当的格式!

答案 4 :(得分:2)

SELECT DATE('2012-11-12 00:00:00');

返回

2012-11-12

答案 5 :(得分:2)

有关详细信息,请参阅: SQL Server Date Formats

[MM / DD / YYYY]

SELECT CONVERT(VARCHAR(10), cast(dt_col as date), 101) from tbl

[DD / MM / YYYY]

SELECT CONVERT(VARCHAR(10), cast(dt_col as date), 103) from tbl

Live Demo

答案 6 :(得分:0)

至少在mysql中,您可以使用DATE(theDate)

答案 7 :(得分:0)

您可以尝试以下方法:

SELECT CONVERT(VARCHAR(10),yourdate,101);

或者这个:

select cast(floor(cast(urdate as float)) as datetime);

答案 8 :(得分:0)

使用此SQL:

SELECT DATE_FORMAT(date_column_here,'%d/%m/%Y') FROM table_name;

答案 9 :(得分:0)

TSQL

SELECT CONVERT(DATE, GETDATE())         // 2019-09-19
SELECT CAST(GETDATE() AS DATE)          // 2019-09-19
SELECT CONVERT(VARCHAR, GETDATE(), 23)  // 2019-09-19