ایس ل ڈیٹ فنکشن
SQL 日期
当我们处理日期时,最难的任务恐怕是确保所插入的日期的格式,与数据库中日期列的格式相匹配。
只要数据包含的只是日期部分,运行查询就不会出问题。但是,如果涉及时间,情况就有点复杂了。
在讨论日期查询的复杂性之前,我们先来看看最重要的内建日期处理函数。
MySQL Date 函数
下面的表格列出了 MySQL 中最重要的内建日期函数:
函数 | 描述 |
---|---|
NOW() | 返回当前的日期和时间 |
CURDATE() | 返回当前的日期 |
CURTIME() | 返回当前的时间 |
DATE() | 提取日期或日期/时间表达式的日期部分 |
EXTRACT() | 返回日期/时间按的单独部分 |
DATE_ADD() | 给日期添加指定的时间间隔 |
DATE_SUB() | 从日期减去指定的时间间隔 |
DATEDIFF() | 返回两个日期之间的天数 |
DATE_FORMAT() | 用不同的格式显示日期/时间 |
SQL Server Date 函数
下面的表格列出了 SQL Server 中最重要的内建日期函数:
函数 | 描述 |
---|---|
GETDATE() | 返回当前日期和时间 |
DATEPART() | 返回日期/时间的单独部分 |
DATEADD() | 在日期中添加或减去指定的时间间隔 |
DATEDIFF() | 返回两个日期之间的时间 |
CONVERT() | 用不同的格式显示日期/时间 |
SQL Date 数据类型
MySQL 使用下列数据类型在数据库中存储日期或日期/时间值:
- DATE - ਫਾਰਮੈਟ YYYY-MM-DD
- DATETIME - ਫਾਰਮੈਟ: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - ਫਾਰਮੈਟ: YYYY-MM-DD HH:MM:SS
- YEAR - ਫਾਰਮੈਟ YYYY ਜਾਂ YY
SQL Server ਦਾਤਾਬੇਸ ਵਿੱਚ ਮਿਤੀ ਜਾਂ ਮਿਤੀ/ਸਮੇਂ ਦੇ ਮੁੱਲਾਂ ਦੀ ਸਟੋਰੇਜ ਲਈ ਹੇਠ ਲਿਖੇ ਡਾਟਾ ਟਾਈਪਸ ਵਰਤੇ ਜਾਂਦੇ ਹਨ:
- DATE - ਫਾਰਮੈਟ YYYY-MM-DD
- DATETIME - ਫਾਰਮੈਟ: YYYY-MM-DD HH:MM:SS
- SMALLDATETIME - ਫਾਰਮੈਟ: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - ਫਾਰਮੈਟ: ਇੱਕਲੀ ਨੰਬਰ
SQL ਮਿਤੀ ਪ੍ਰਸ਼ਾਸਨ
ਜੇਕਰ ਸਮੇਂ ਦਾ ਹਿੱਸਾ ਨਾ ਸ਼ਾਮਿਲ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਦੋ ਮਿਤੀਆਂ ਨੂੰ ਸਰਲਤਾ ਨਾਲ ਤੁਲਨਾ ਕਰ ਸਕਦੇ ਹਾਂ!
ਅਗਰ ਅਸੀਂ ਹੇਠ ਲਿਖੇ "Orders" ਤਾਲਿਕਾ ਹਾਸਲ ਕਰਦੇ ਹਾਂ:
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 |
2 | printer | 2008-12-26 |
3 | electrograph | 2008-11-12 |
4 | telephone | 2008-10-19 |
ਹੁਣ, ਅਸੀਂ ਇਸ ਤਾਲਿਕਾ ਤੋਂ OrderDate ਨੂੰ "2008-12-26" ਦੇ ਰਿਕਾਰਡ ਚੁਣਨਾ ਚਾਹੁੰਦੇ ਹਾਂ。
ਅਸੀਂ ਹੇਠ ਲਿਖੇ SELECT ਸਟੇਟਮੈਂਟ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ:
SELECT * FROM Orders WHERE OrderDate='2008-12-26'
ਨਤੀਜੇ ਸੈੱਟ:
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 |
3 | electrograph | 2008-12-26 |
ਹੁਣ ਅਸੀਂ "Orders" ਕਲਾਸ ਇਸ ਤਰ੍ਹਾਂ ਦੀ ਹਾਸਲ ਕਰਦੇ ਹਾਂ (ਕਿਰਤੇ "OrderDate" ਕਿਸ਼ੋਰ ਵਿੱਚ ਸਮੇਂ ਦਾ ਹਿੱਸਾ ਦੇਖੋ):
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 16:23:55 |
2 | printer | 2008-12-26 10:45:26 |
3 | electrograph | 2008-11-12 14:12:08 |
4 | telephone | 2008-10-19 12:56:10 |
ਜੇਕਰ ਅਸੀਂ ਉੱਪਰ ਵਾਲੇ SELECT ਸਟੇਟਮੈਂਟ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ:
SELECT * FROM Orders WHERE OrderDate='2008-12-26'
ਤਾਂ ਅਸੀਂ ਨਤੀਜੇ ਨਹੀਂ ਮਿਲਦੇ।ਇਹ ਇਸ ਕਾਰਨ ਹੈ ਕਿ ਇਸ ਕਿਸ਼ੋਰ ਵਿੱਚ ਸਮੇਂ ਦਾ ਹਿੱਸਾ ਨਹੀਂ ਹੈ。
ਸੁਝਾਅ:ਅਗਰ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਕਿਸ਼ੋਰ ਸਰਲ ਅਤੇ ਸੁਲਭ ਰੱਖੇ, ਤਾਂ ਮਿਤੀ ਵਿੱਚ ਸਮੇਂ ਦਾ ਹਿੱਸਾ ਨਾ ਵਰਤੋਂ ਕਰੋ!