【问题标题】:How to display date and time from datetime column in SQL如何在 SQL 中显示日期时间列中的日期和时间
【发布时间】:2019-04-24 11:02:10
【问题描述】:

我有一个 staff_registered 列,其中包括员工注册的日期和时间。但是,我希望能够检索 2007 年 1 月 22 日注册的所有员工的日期和时间,如何显示时间?

SELECT  EMPLOYEE_ID, FIRST_NAME, LAST_NAME, TO_CHAR (SYSDATE,'DD MON YY 
HH:MI:SS') 
FROM EMPLOYEE
WHERE TO_CHAR (REGISTRATION_DATE, 'DD-MON-YY') = '22-JAN-07';

我已经写了这个作为起点,我知道它是错误的,因为它得到今天的日期不是 22-JAN-07 或时间,但我不知道如何更正它。

【问题讨论】:

  • 如果你的日期是 1907 年呢?最好使用TO_CHAR (REGISTRATION_DATE, 'DD-MM-YYYY') = '22-01-2007'TO_CHAR (REGISTRATION_DATE, 'DD-MON-YYYY', 'nls_date_language = american') = '22-JAN-2007' 甚至更好的TRUNC(REGISTRATION_DATE) = DATE '2007-01-22'

标签: sql oracle date datetime time


【解决方案1】:

我相信您只是在处理一个错字/脑放屁。您正在选择语句中选择今天的 (SYSDATE) 日期。您想选择 REGISTRATION_DATE。您搜索什么并不重要,因为目前它始终会返回当前日期,直到您将其更改为下方。

SELECT  EMPLOYEE_ID, FIRST_NAME, LAST_NAME, TO_CHAR (REGISTRATION_DATE,'DD MON YY HH:MI:SS') 
FROM EMPLOYEE
WHERE TO_CHAR (REGISTRATION_DATE, 'DD-MON-YY') = '22-JAN-07';

除非我误解了你的问题...

【讨论】:

  • @WernfriedDomscheit 我不赞同他选择以任何方式格式化他的日期的方式哈哈,只是指出他正在处理一个他担心的错字。
【解决方案2】:

如果我理解正确,您有一列包含您要查找的内容的字符串“05-SEP-2018”

如果是这样,我会建议类似的东西

SELECT  EMPLOYEE_ID, FIRST_NAME, LAST_NAME, TO_CHAR (SYSDATE,'DD MON YY HH:MI:SS') 
FROM STUDENT
WHERE CONTAINS(TO_CHAR(REGISTRATION_DATE, '05-SEP-2018'))

如果有帮助请告诉我

【讨论】:

    【解决方案3】:

    使用TRUNC 不带TO_CHAR 转换的过滤条件:

    WHERE TRUNC(REGISTRATION_DATE) = date'2018-09-05'
    

    既然REGISTRATION_DATE 已经是DATE 类型字段,不是吗?

    【讨论】:

      猜你喜欢
      • 2016-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-13
      • 2022-01-03
      • 1970-01-01
      • 2010-11-04
      相关资源
      最近更新 更多